firebase - 参数类型'流?不能分配给参数类型'Stream?
问题描述
我正在尝试使用 StreamBuilder 显示来自 firestore 数据库的文本消息流。但是由于某种原因,不能将 Stream 的参数类型分配给Querysnapshot
. 如果我摆脱Querysnapshot
流构建器不再显示错误,但随后我收到错误:
没有为“对象”类型定义吸气剂“文档”
谁能帮我解决这个问题?
Widget ChatMessageList() {
return StreamBuilder(
stream: chatMessagesStream,
builder: (context, snapshot) {
return ListView.builder(
itemCount: snapshot.data!.documents.length,
itemBuilder: (context, index) {
return MessageTile(snapshot.data!.documents[index].data['message']);
},
);
},
);
}
解决方案
出现这种消息是因为 dart 不知道对象snapshot.data
是什么类型。您可能需要指定将从您的流中返回的预期类型。chatMessagesStream 返回什么?如果是Stream<Bar>
,那么就写吧(context, AsyncSnapshot<Bar> snapshot)
,就像官方例子中的StreamBuilder
此外,您不应该直接从您的小部件调用 firebase。这将创建大量的复制粘贴和混乱的代码。您可以在此处找到更简洁架构的示例: real-time-updates-with-streambuilder
设置它会做一些额外的工作,但当你在代码中包含更多调用时,它肯定会很快得到回报。
推荐阅读
- python - Tkinter 不可修改/可修改的文本小部件
- mysql - MySQL查询根据一个共同值对两个表中的一列求和并计算另一列?
- json.net - JsonConvert 反序列化 - 如何将 json 的某些部分的值作为字符串而不是反序列化
- yii2 - Yii2 - 从 CSV 文件导入多个用户
- string - 交换脚本。Н现在添加到所有行的末尾
- sql - SQL Oracle Managed Provider 与 SQLDeveloper 的不同查询结果
- java - 如何连续循环菜单直到选择退出选项,以及如果选择无效操作则重复菜单
- postgresql - 在 Postgresql AWS RDS 实例上的所有会话中获取缓冲区中的查询列表
- apache-kafka - CommitFailedException:提交无法完成,因为该组已经重新平衡并将分区分配给另一个成员
- jquery - 水平列表中的 jQuery UI 自动完成值