firebase - 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 中的数据中单独获取的内容。还请建议一些我可以阅读的来源,这样下次我就不需要问这样的问题了。
解决方案
更改这些行:
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 中包含的数据。
推荐阅读
- javascript - JavaScript 中的表单提交按钮
- reactjs - 使用 AWS Cognito 和 React 仅 Facebook/Google 登录(无用户名/密码)
- c# - 使用数组进行统计(十进制)
- keyboard-shortcuts - Rider :转到下一个建议的键盘快捷键
- javascript - Onclick 进度条
- angular - 自定义管道中的角度访问组件属性
- ruby-on-rails - 机械化处理错误
- ios - iPad 上的 iPhone 应用程序 - 从 2X 而不是 1X 开始
- html - 使用引导程序居中
- javafx - 在javafx中更改三态复选框的循环顺序