Ris*_*waj 3 dart flutter dart-null-safety
在大于 2.12.0 的 dart sdk 中,我们经常使用“?” 确保该参数也可以具有空值,但是如何使用 ? 数据类型没有?或相反亦然。什么可以是最喜欢的方式来整理“int”?不能是“int”类型。
将可为空的字符串 ( String?)分配给不可为空的字符串 ( String) 时会出现此错误。例如:
String? s = 'a';
int expectsString(String s) => s.length;
void main() {
expectsString(s); // <-- Error
}
Run Code Online (Sandbox Code Playgroud)
解决方案是提供一个不可为空的String. 你可以使用:
(1) 局部变量:
void main() {
var s1 = s; // Local variable
expectsString(s1 ?? 'default value');
}
Run Code Online (Sandbox Code Playgroud)
(2) Bang运算符:
void main() {
expectsString(s!); // Bang operator
}
Run Code Online (Sandbox Code Playgroud)
Jor*_*ira -1
如果编译器知道可为空变量已初始化,则可以将其赋予不可为空变量,例如,这有效:
String? a; //a is nullable
a = 'some value'; // a is initialized
String b = ''; // b is not nullable
b = a; //b can receive a once a is initialized
Run Code Online (Sandbox Code Playgroud)
那是因为编译器知道 a 不为 null,但如果 a 未初始化,则它将不起作用。
| 归档时间: |
|
| 查看次数: |
3806 次 |
| 最近记录: |