Flutter Dart报错:操作数不可为null条件恒假,需保留null判断如何解决
问题根因
你声明变量时使用了late关键字修饰非空的Future<QuerySnapshot>类型,Dart空安全规则明确非空类型的变量永远不会为null,编译器会直接判定searchResultsFuture == null这个条件永远不成立,因此抛出对应错误。
另外late修饰的非空变量如果在赋值前被访问,会直接抛出运行时LateInitializationError,并不会返回null,你原本的写法就算绕开编译错误,运行时也无法达到判断变量是否完成初始化的业务目的。
解决方案
只需要将变量的声明修改为可空类型即可,同时去掉late修饰符,可空类型的变量默认初始值就是null,完全符合你保留== null判断的业务需求:
// 修改后的变量声明 Future<QuerySnapshot>? searchResultsFuture;
修改后你原有的build方法中的三目判断逻辑不需要做任何调整,即可正常编译运行。
如果后续你在确定searchResultsFuture已经完成赋值的场景使用该变量,可以加!做非空断言来避免不必要的判空提示,比如传入FutureBuilder时:
FutureBuilder( future: searchResultsFuture!, builder: (context, snapshot) { // 你的业务逻辑 } )
内容的提问来源于stack exchange,提问作者user16416358
相关产品推荐
相关产品推荐

