首页 > 解决方案 > Flutter Firebase 流

问题描述

我正在尝试使用

StreamBuilder<QuerySnapshot>(
            stream: _firestore.collection('messages').snapshots(),
            builder: (context,snapshot){
              if(snapshot.hasData) {
                final messages = snapshot.data.docs;
                List<Text> messageWidgets=[];
                for(var message in messages){
                 final messageText=message.data['text'];
                 final messageSender=message.data['sender'];
                 final messageWidget=
                     Text('$messageText from $messageSender');
                 messageWidgets.add(messageWidget);
                }
              }
            },
            ),

I am getting error in
final messageText=message.data['text'];
final messageSender=message.data['sender'];

我知道这可能是因为新的更新,但我想访问它并且在文档中找不到这样的东西。

在文档的数据库中,我有两个字段 sender 和 text,这是我想从 messageText 和 messageSender 中的数据中单独获取的内容。还请建议一些我可以阅读的来源,这样下次我就不需要问这样的问题了。

标签: firebasefluttergoogle-cloud-firestorestream

解决方案


更改这些行:

final messageText=message.data['text'];
final messageSender=message.data['sender'];

到:

final messageText=(message.data() as Map<String, dynamic>)['text'];
final messageSender=(message.data() as Map<String, dynamic>)['sender'];

QueryDocumentSnapshot可以通过调用该.data()方法来检索a 中包含的数据。


推荐阅读