flutter: NoSuchMethodError: The getter 'isEmpty' was called on null

flutter: NoSuchMethodError: The getter 'isEmpty' was called on null

我正在调用网络 API 并收到 Profile 模型作为响应。当我使用下面的代码时,它会抛出一个错误:

try{
   if(profile.message.isEmpty){
      Navigator.of(context).pushNamed("/home");
   }else if(profile == null){
      _showDialog("Please check your internet connection");
   }else{
      _showDialog("Please enter valid credentials");
   }
}catch(exception){
   print(exception);
}

那是因为profile.messagereturnsnull。你可能想要

if(profile?.message?.isEmpty ?? true)

? 如果表达式的前一部分导致 null 并且 ?? true 导致 true 如果表达式的前一部分是 [=] 则防止错误12=],因此对 == nullisEmpty 进行相同的 if(...) 检查。

判断数组为空时,用什么来判断呢? Dart提供了isNotEmpty,但是在使用中经常会报错,因为你当时的数组可能不是[]和null。全部使用text

时多加一层判断

如果您的要求只是空的或 null,您可以使用 Dart 的安全导航运算符使其更简洁:

作为一个 isEmpty 函数 returns true 如果参数为 null 或空字符串。

if (routeinfo["my_value"]?.isEmpty ?? true) {
  // 
}

另一个很好的写法:

if ((value ?? '') == '') { ... }

也这样做

 return (list == null || list .isEmpty) ? Container() : Container(child:Text('The current array is not empty'));