[英]How this code is passing null safety in dart?
在编写一个简单的类时,我有点困惑,如下所示:
class NewsSource {
final String url;
final String name;
final String imageUrl;
NewsSource({required this.url, required this.name, required this.imageUrl});
factory NewsSource.fromFireStore(
DocumentSnapshot<Map<String, dynamic>> snapshot,
SnapshotOptions? options) {
final data = snapshot.data();
return NewsSource(
url: data?['url'], name: data?['name'], imageUrl: data?['imageUrl']);
}
Map<String, dynamic> toFireStore() {
return {"url": url, "name": name, "imageUrl": imageUrl};
}
}
fromFireStore 函数调用 NewsSource 构造函数,其中参数可以清楚地为空,但飞镖仍然没有抱怨为什么?
PS:如果我删除动态然后它开始抱怨,我猜任何使用动态都会使空检查变得多余。
这是因为dynamic
。 dynamic
类型的变量基本上不是空安全的,仍然需要相应地处理。
我的猜测是,如果我们假设地图不为 null,那么data?['url']
将返回一个dynamic
类型的变量,其中null
也是一个有效值。 并且dynamic
类型的变量永远不会检查空安全性。 所以它甚至不用抱怨地图是否为null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.