flutter - 如何将数据添加到颤振流?
问题描述
这是我设置的方式stream
StreamController<List<MessageFromCloudDetail>> _messageFromCloudDetail;
这是向其中添加数据的方法
ChatApiClient().fetchDetail(http.Client(),documentId).then((data){
_messageFromCloudDetail.add(data);
});
这是我的streambuilder
StreamBuilder <List<MessageFromCloudDetail>>(
stream:_messageFromCloudDetail.stream,
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return Container(
child: Center(
child: CircularProgressIndicator(),
),
);
default:
return new Flexible(
child: ChatBuilder(
querySnapshot: snapshot.data,
userFullname: userFullname,
userId: userId,
roomId: documentId),
);
}
}),
对于第一次加载/打开,数据正在显示。但是,当我尝试添加这样的新数据时
ChatApiClient().inputDetail(documentId, userId, _textController.text ).then((result){
// [{"chatDetailId":"3","roomId":"1","from":"2","messageContent":"4","createdDate":"2019-12-02 13:53:25","chatImage":null}]
_messageFromCloudDetail.sink.add(result);
});
但它正在更改为新的 json 而不是添加新数据。所以我的问题是,如何将新数据添加到流中?
注意:请不要告诉我重新加载所有数据。
这里的日志
第一个加载页面
I/flutter (19129): AsyncSnapshot<List<MessageFromCloudDetail>>(ConnectionState.waiting, null, null)
I/flutter (19129): AsyncSnapshot<List<MessageFromCloudDetail>>(ConnectionState.active, [Instance of 'MessageFromCloudDetail'], null)
在我提交了一些东西之后
W/IInputConnectionWrapper(19129): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper(19129): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper(19129): getTextAfterCursor on inactive InputConnection
I/flutter (19129): AsyncSnapshot<List<MessageFromCloudDetail>>(ConnectionState.active, [Instance of 'MessageFromCloudDetail'], null)
我的课
class MessageFromCloudDetail {
String roomId;
String from;
String messageContent;
String createdDate;
String chatImage;
MessageFromCloudDetail(
{this.roomId, this.from, this.messageContent, this.createdDate, this.chatImage});
factory MessageFromCloudDetail.fromJson(Map<String, dynamic> json) {
return MessageFromCloudDetail(
roomId: json['roomId'] as String,
from: json['from'] as String,
messageContent: json['messageContent'] as String,
createdDate: json['createdDate'] as String,
chatImage: json['chatImage'] as String
);
}
}
解决方案
我认为您只是用最新数据替换旧数据。我不知道您的数据结构是如何制作的,但您可能需要将新数据附加到最旧的数据。
推荐阅读
- discord.py - 如何修复导入目录?
- reactjs - 超过最大更新深度。当组件在 useEffect 中调用 setState 时会发生这种情况,但 useEffect 要么没有依赖数组
- java - 从未压缩/原始字节数组构造 Java ECPublic 密钥
- python - /shops/profile/mannu 处的 KeyError
- java - 为什么我在 Firebase 中出现数据库异常?
- sql - 如何根据某些条件为行分配运行值
- sql - 基于来自另一个表的值的 SQL 查询
- reactjs - 使用 React 检索文档数据 Firestore
- unity3d - Unity如何在调用静态方法之前清醒运行?
- linux - sed 匹配一个条件但不匹配另一个