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.message
returnsnull
。你可能想要
if(profile?.message?.isEmpty ?? true)
?
如果表达式的前一部分导致 null
并且 ?? true
导致 true
如果表达式的前一部分是 [=] 则防止错误12=],因此对 == null
和 isEmpty
进行相同的 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'));
我正在调用网络 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.message
returnsnull
。你可能想要
if(profile?.message?.isEmpty ?? true)
?
如果表达式的前一部分导致 null
并且 ?? true
导致 true
如果表达式的前一部分是 [=] 则防止错误12=],因此对 == null
和 isEmpty
进行相同的 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'));