flutter - 如何将流与提供者混合?
问题描述
我正在使用Provider
。我想将不同的数据源与stream
.
用例:聊天应用程序,其中一些消息来自系统(日期/错误消息),但其他消息来自数据库(Firestore)。
例如,仅从我现在使用的数据库中获取消息StreamBuilder
:
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('message').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
return new ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
return messageBuilder(snapshot.data.documents[index], xa);
});
但StreamBuilder
不能混合来自其他来源的数据。messages[index]
我想为不同的消息类型注入消息。
可能的解决方案是创建单独的消息列表并输入ListView.builder
:
return new ListView.builder(
itemCount: messages.length,
itemBuilder: (context, index) {
final message = messages[index];
return messageBuilder(message, xa);
});
但是我如何Provider
将来自 Firestore 的流和系统消息混合到messages
列表中呢?
我如何将数据源整合到一起final List messages
?
感谢帮助!
解决方案
推荐阅读
- winforms - 如何在 Windows 窗体运行时访问窗体资源?
- eclipse - 从 RCP 应用程序中启动 maven 构建
- javascript - Angular用html替换组件选择器
- firefox - Firefox 57+ WebExtensions 可以操纵 userChrome.css 吗?
- time - x 轴在 SAS 中应与时间成比例
- javascript - Axios 实例:如何在响应拦截器中取消请求?
- ansible - 当gather_facts为假时,如何在调用ansible角色之前显式运行设置模块?
- html - 在 div 中显示各种项目
- python - Pylance:无法从源解析导入“requests.packages.urllib3.util.retry”
- node.js - NodeJS 的 bycrypt.compare() 函数如何在内部工作?