【问题标题】:QuerySnapshot<Object?>?' is nullableQuerySnapshot<Object?>?'可以为空
【发布时间】:2022-01-18 05:41:51
【问题描述】:

我在 Flutter 中遇到了 Firebase 的问题

这是代码:

StreamBuilder<QuerySnapshot>(
              stream: FirebaseFirestore.instance.collection("tasks").snapshots(),
              builder:(context, AsyncSnapshot<QuerySnapshot>snapshot){
                if(!snapshot.hasData) return LinearProgressIndicator();
                return Expanded(
                  child: _buildList(snapshot.data)
                );
              }
            )

控制台告诉我:

错误:参数类型 'QuerySnapshot?'无法分配 到参数类型 'QuerySnapshot' 因为 '查询快照?可以为空并且 'QuerySnapshot' 不是。 lib/main.dart:82

  • “QuerySnapshot”来自“package:cloud_firestore/cloud_firestore.dart” ('/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-3.1.4/lib/cloud_firestore.dart')。 包:cloud_firestore/cloud_firestore.dart:1
  • “对象”来自“飞镖:核心”。 孩子:_buildList(snapshot.data)

我无法理解这个问题。 谢谢

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    snapshot.data 可以为空,这意味着它可以为空。您已经通过添加if (snapshot.hasData) 确保它不会是null,但dart 不知道这一点。因此,为了让 dart 知道您已确保可空值不为空,您应该添加一个空检查运算符 (!):

    _buildList(snapshot.data!);
    

    这意味着如果snapshot.data 为空,您将收到错误消息,但在这种情况下,这不会是因为您之前已经检查过。

    【讨论】:

      猜你喜欢
      • 2022-11-19
      • 2022-01-22
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 2020-10-24
      • 2020-12-19
      • 1970-01-01
      相关资源
      最近更新 更多