默认情况下,Dart 将假定您声明的任何变量都不能为 null。您将无法分配null
给变量,并且在运行时会引发错误。如果您尝试将不可为空的变量视为可能为空,它也会抱怨,这就是您对“??”所做的事情。
你可以使用?
after 变量的类型来告诉 Dart 你的变量将接受空值。??
允许我们处理空值而无需编写额外的代码行
简而言之,x = y ?? z
可以描述为
如果左操作数(y) 是null
,则分配右操作数(z) 即。
void example(String? myString) {
String? y = myString;
String z = 'spam';
var x = y ?? z;
print(x);
}
void main() {
example('hello!');
example(null);
}
// Output:
// hello!
// spam
请注意,我添加了“?” 在第二行的 'String' 之后,让 Dart 知道 'y' 可能为空。这可以防止我稍后在尝试使用可识别空值的运算符 (??) 将其分配给“x”的代码中出现错误。
我希望这有助于为您提供一些背景知识,而不仅仅是解决您的问题!:)
关于 Dart 中的 Null-aware 运算符的中短篇文章