问题描述
我正在从docs
复制此文件// In null-safe Dart,none of these can ever be null.
var i = 42; // Inferred to be an int.
String name = getFileName();
final b = Foo();
但是我正在null-safe dartpad中运行以下代码,并且可以编译。
void main() {
var x = null;
print(x);
}
这是文档错误还是我遗漏了一些东西?
解决方法
您的示例与文档试图解释的内容不太接近。尝试以下方法:
void main() {
var x = 42;
x = null; // Error: A value of type 'Null' can't be assigned to a variable of type 'int' - line 3
print(x);
}
原因是var x = 42
是“推断为int
”而不是int?
。
在您的示例中,发生的事情是var x = null
被解析,因此x
被视为类型dynamic
,因为Dart不知道您要使用哪种类型。由于dynamic
的值可以为null
,因此您可以使用。