据了解,在Dart上检查对象是null
还是Null
应该是同一件事。
类似的东西:
print(bar == null);
print(bar is Null);
应打印相同的值。但是,在使用Firebase的Flutter应用程序中,我得到了以下行为:
print(snapshot.data['appearance']['details'].runtimeType); // Null
print(snapshot.data['appearance']['details'].runtimeType == null); // false
print(snapshot.data['appearance']['details'].runtimeType == Null); // true
print(snapshot.data['appearance']['details'].runtimeType is Null); // false
firebase上的字段值为null
。为什么会这样呢?
答案 0 :(得分:2)
null
是一个值。 Null
是类型。
.runtimeType
返回一个Type
。它无法返回null
值(这意味着该对象没有类型)。 null.runtimeType
返回Null
;也就是说,null
对象的类型为Null
。
关于.runtimeType is Null
为什么是false
的原因,请参见:What is the difference between 'is' and '==' in Dart?