我最近遇到了这个问题,如何解决Flutter中的“断言失败:布尔表达式不能为null”异常
问题出在哪里,应该是被视为有效的无效代码。
这段代码可以总结为:
int stuff;
if (stuff = null) { // = instead of ==
}
Run Code Online (Sandbox Code Playgroud)
但是为什么要编译此代码?如下将不会。
int stuff;
if (stuff = 42) {
}
Run Code Online (Sandbox Code Playgroud)
伴随以下编译错误:
条件必须具有静态的“布尔”类型。
因此,我可能会出于一致性考虑if (stuff = null)而产生相同的错误。
null是boolDart中变量的有效值,至少直到Dart支持非空类型。
bool foo = null;
Run Code Online (Sandbox Code Playgroud)
要不就
bool foo;
Run Code Online (Sandbox Code Playgroud)
已验证。
因此,从静态分析的角度来看,第一种情况没有错。
在第二种情况下,int由于赋值而推断出类型,已知该赋值不是有效的布尔值。
bool foo = 42;
Run Code Online (Sandbox Code Playgroud)
是无效的。
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |