空值检查运算符用于空值 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)

您影响 placeCityisEqualTo,但 placeCity 可以为空。这就是您收到此错误的原因。

要更正此错误,您必须确保 placeCity 不能为空。

为此,当您影响 placeCity 时,请这样做:

placeCity = something ?? 'default value'

如果您确信 placeCity 永远不会为空,您也可以使用 ! 运算符,如下所示:

.where('place_city', isEqualTo: placeCity!)

它告诉 dart placeCity 永远不会为空,因此错误消失。