api - 如何在颤动中刷新聊天收件箱的消息流
问题描述
我是 Flutter 的新手,我开始使用 Flutter 和 Flutter Stream 创建一个简单的信使应用程序来处理获取消息内容的 API 调用。
还创建了消息控制器来更新和刷新消息列表
class MessageService {
Client httpClient = Client();
List<MessageModal> _messageList = [];
Future<AppConfig> _getApiURL() async {
final config = await AppConfig.forEnvironment('dev');
return config;
}
Future<List<MessageModal>> getMessageThread(
String senderId, String receiverId) async {
var config = await _getApiURL();
var url = config.baseUrl + "message/history";
final response = await httpClient.post(url,
headers: {"content-type": "application/json"},
body: json.encode({
"senderId": senderId,
"receiverId": receiverId,
}));
if (response.statusCode == 200) {
_messageList = messageListFromJson(response.body);
} else {
_messageList = [];
}
return _messageList;
}
}
这是获取 API 数据的消息服务类
class MessageService {
Client httpClient = Client();
List<MessageModal> _messageList = [];
Future<AppConfig> _getApiURL() async {
final config = await AppConfig.forEnvironment('dev');
return config;
}
Future<List<MessageModal>> getMessageThread(
String senderId, String receiverId) async {
var config = await _getApiURL();
var url = config.baseUrl + "message/history";
final response = await httpClient.post(url,
headers: {"content-type": "application/json"},
body: json.encode({
"senderId": senderId,
"receiverId": receiverId,
}));
if (response.statusCode == 200) {
_messageList = messageListFromJson(response.body);
} else {
_messageList = [];
}
return _messageList;
}
}
这是创建消息列表预览的 ui 预览
StreamBuilder<List<MessageModal>> _buildStreamBuilder() {
return StreamBuilder<List<MessageModal>>(
// stream: _messageService.getMessageThread("UID1", "UID2").asStream(),
stream: streamController.counter,
initialData: _messageList,
builder:
(BuildContext context, AsyncSnapshot<List<MessageModal>> snapshot) {
print(snapshot.data);
if (snapshot.hasError) {
print(snapshot.error);
return Center(
child: Text("Something went wrong!"),
);
} else if (snapshot.hasData) {
List<MessageModal> messages = snapshot.data;
return _buildMessageHistory(messages);
} else {
return Center(
child: CircularProgressIndicator(),
);
}
},
);
}
我需要更新消息并继续更新(发送 API 调用并获取数据以流式传输)消息预览。任何人都可以帮我解决这个问题。
解决方案
推荐阅读
- javascript - 如何检查节点在intersectionObserver api中是否可见
- spring - S3PersistentAcceptOnceFileListFilter 在应用程序重新启动时为现有/同步文件生成消息
- c# - DialogFlow V2 gRPC (c#)(更新实体等)
- xml - JAXB - 解析具有相同名称的不同 xml 标签
- jquery - 将 jquery 动态 ajax div 函数转换为 vue.js
- excel - 我想使用变量自动填充 Excel 行
- rx-java - 在 Rxjava 中使用 Flowable 时无法处理错误
- java - 将字节数组解码为 base64 时出错,其中包含“-”和“_”等字符
- primefaces - primefaces textEditor 字体
- java - 执行以下代码时未发现任何行错误(扫描仪)