【问题标题】:StreamBuilder returns error after updating flutterStreamBuilder 更新颤振后返回错误
【发布时间】:2021-11-13 00:14:24
【问题描述】:

更新颤振后,我在 StreamBuilder 中遇到了问题。 标有 ** 的行返回错误。我试图通过添加空检查(!)来纠正它,但它返回:

没有为“对象”类型定义运算符“[]”。

我该如何解决?

此外,有没有更优雅的方式(也就是没有 StreamBuilder)来获取快照/流? 例如,我注意到以下代码行是有效的:

FirebaseFirestore.instance.collection("campdata").doc(docId).snapshots();

但是,我不知道如何进一步开发它,以便它从 firebase 返回可读数据。

非常感谢

  strem_builder_matcheduser(){
      return StreamBuilder(
          stream: firestore.collection("Requests").doc(matched_user_mail).snapshots(),
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              final messages = snapshot.data;
              matched_user_connectionstatus = **messages['status of connection']**;
            }
            if(matched_user_connectionstatus=="offline"){
    
              try{
              }catch(e){}
              return SizedBox();
            }
            else
              return Text("");
          }
      );

    }

【问题讨论】:

    标签: firebase flutter google-cloud-firestore stream-builder


    【解决方案1】:

    改成这样:

    matched_user_connectionstatus = messages.get('status of connection');
    

    或者这个:

    final messages = snapshot.data() as Map<String, dynamic>;
    matched_user_connectionstatus = messages['status of connection'];
    

    【讨论】:

    • snapshot.data.data() is not valid I made: final messages = snapshot.data as Map; matched_user_connectionstatus = 消息['连接状态'];但它返回一个错误:在类型案例中键入“_JsonDocumentSnapshot”我们不是“Map”类型的子类型
    • 我编辑了我的答案,现在试试,你需要使用data(),所以用snapshot.data()而不是data.data()
    • 最终消息 = snapshot.data() 均无效。我尝试了 snapshot.data 但它返回了一个错误,如前所述
    【解决方案2】:

    一个提示,当您使用 FutureBuilder 或 StreamBuilder 时,始终设置一个条件,例如加载信息。因为从firebase获取信息需要时间,不是立即的,你必须在信息加载时设置一个条件,否则可能会出错

    if(snapshot.connectionState == ConnectionState.waiting){
       return ScaffoldMessenger.of(context).showSnackBar();
     }
    

    【讨论】:

    • 我会考虑的谢谢
    猜你喜欢
    • 2022-06-28
    • 2021-08-21
    • 2021-05-11
    • 1970-01-01
    • 2021-06-11
    • 2019-11-05
    • 2020-12-26
    • 2020-08-23
    • 1970-01-01
    相关资源
    最近更新 更多