在阅读区块插件文档时,我遇到了此代码。我的问题是为什么我们需要空的静态类在这里。如果我们想检查null,我们已经有了null check ?
功能。
代码:
import 'package:equatable/equatable.dart';
class User extends Equatable {
const User(this.id);
final String id;
@override
List<Object> get props => [id];
static const empty = User('-');
}
内容的原始截图
参考内容:https://bloclibrary.dev/#/flutterlogintutorial?id=user-repository
2条答案
按热度按时间sulc1iza1#
在真实的世界的项目中,你会遇到一些不能使用null安全的情况,例如,如果你有一个函数已经被使用了很多地方,你不能改变它(现实世界的维护问题):
然后如果你有一个可空的
user
,你不能把它传递给上面的函数,我见过很多人试图像这样调用上面的函数:当这种情况发生时,这将是不好的做法,因为如果项目有许多开发人员,每个人都将有自己的方式来决定哪些用户将是空的
User
。许多例子他们可以想到:User("-")
,User("-1")
,User("")
,...那么上面的空静态值将解决这个问题,每个都将使用
User.empty
作为均匀性6yjfywim2#
看起来作者可能试图使用Null Object Pattern。
当“空性”意味着任何对象在任何时候都可以为空时,这种模式就被考虑出来了,如果你想让它真正安全的话,你的代码将是if/else分支的噩梦。
dart 非常酷的声音零安全,我个人不明白为什么它会有用,但我想每个人都使用他们喜欢的模式。
如果你想知道为什么它会在那里,只需测试它:删除它,然后修复所有在编译时弹出的错误,在运行时测试它,然后找出你更喜欢的版本。也许它有你还没发现的作用