空值检查运算符用于空值 FLUTTER 2.10
Null check operator used on a null value FLUTTER 2.10
我收到此错误(空值检查运算符用于空值)当在 firebase 上同时使用 where 条件和 order by query 时小部件库捕获异常,
result = FirebaseFirestore.instance
.collection('posts')
.where('place_city', isEqualTo: placeCity)
.orderBy('likes', descending: true)
.snapshots();
如果我删除 where 语句或 order by 它将起作用,就像这样
result = FirebaseFirestore.instance
.collection('posts')
//.where('place_city', isEqualTo: placeCity)
.orderBy('likes', descending: true)
.snapshots();
在 result
中存储快照后,您可能正在使用或试图访问数据,您可能在其中使用了空检查运算符。
请分享完整代码进行评估,或在添加空运算符的地方调试代码。
在将数据分配给小部件之前,验证该字段值是否为空。然后才分配给小部件。
示例 1:在将数据分配给小部件之前进行验证
if(snapshot.data != null) {
return Text(snapshot.data.name);
}
示例 2:直接在小部件中处理
Text(snaphot.data.name ?? '');
你有这个错误是因为空安全。
当您添加:
.where('place_city', isEqualTo: placeCity)
您影响 placeCity
到 isEqualTo
,但 placeCity
可以为空。这就是您收到此错误的原因。
要更正此错误,您必须确保 placeCity
不能为空。
为此,当您影响 placeCity 时,请这样做:
placeCity = something ?? 'default value'
如果您确信 placeCity 永远不会为空,您也可以使用 !
运算符,如下所示:
.where('place_city', isEqualTo: placeCity!)
它告诉 dart placeCity
永远不会为空,因此错误消失。
我收到此错误(空值检查运算符用于空值)当在 firebase 上同时使用 where 条件和 order by query 时小部件库捕获异常,
result = FirebaseFirestore.instance
.collection('posts')
.where('place_city', isEqualTo: placeCity)
.orderBy('likes', descending: true)
.snapshots();
如果我删除 where 语句或 order by 它将起作用,就像这样
result = FirebaseFirestore.instance
.collection('posts')
//.where('place_city', isEqualTo: placeCity)
.orderBy('likes', descending: true)
.snapshots();
在 result
中存储快照后,您可能正在使用或试图访问数据,您可能在其中使用了空检查运算符。
请分享完整代码进行评估,或在添加空运算符的地方调试代码。
在将数据分配给小部件之前,验证该字段值是否为空。然后才分配给小部件。
示例 1:在将数据分配给小部件之前进行验证
if(snapshot.data != null) {
return Text(snapshot.data.name);
}
示例 2:直接在小部件中处理
Text(snaphot.data.name ?? '');
你有这个错误是因为空安全。
当您添加:
.where('place_city', isEqualTo: placeCity)
您影响 placeCity
到 isEqualTo
,但 placeCity
可以为空。这就是您收到此错误的原因。
要更正此错误,您必须确保 placeCity
不能为空。
为此,当您影响 placeCity 时,请这样做:
placeCity = something ?? 'default value'
如果您确信 placeCity 永远不会为空,您也可以使用 !
运算符,如下所示:
.where('place_city', isEqualTo: placeCity!)
它告诉 dart placeCity
永远不会为空,因此错误消失。