[英]Dart Null safety error : Null check operator used on a null value
[英]Dart null safety with if check
为什么 Dart 忽略了我的 null 检查?
因为当下面的代码执行时:
Widget? footer;
...
if (footer != null && index == data.length) {
return footer;
}
您的footer
有可能从代码的其他部分设置为null
,因此会显示错误。
你可以加!
如果您完全确定footer
不会因 rest 的使用寿命而无效。 所以,你可以使用这个:
if (footer != null && index == data.length) {
return footer!;
}
但您的解决方案更安全,因为它总是检查footer
是否不是 null:
if (footer != null && index == data.length) {
// whenever footer is nulled, return SizedBox
return footer ?? const SizedBox();
}
正确代码:
final footer = this.footer;
if (footer != null && index == data.length) {
return footer;
}
为什么? 因为这个 class 的子类可以覆盖页脚吸气剂。 IE:
Widget get footer {
if (Random().nextBool()) return null;
else return super.footer;
}
因此,每次对footer
的调用都可能返回 null。
就个人而言,我总是在检查后做 '!'( if (footer != null) footer!
)。 因为为 getter 提供副作用是一种很大的代码气味。
您可以使用此代码段检查变量是否为 null
a != null && [do something]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.