Api 如何在Flatter中刷新聊天收件箱的消息流
我对颤振还不熟悉,我开始创建一个简单的messenger应用程序,使用颤振和颤振流处理API调用以获取消息内容 还创建了消息控制器以更新和刷新消息列表Api 如何在Flatter中刷新聊天收件箱的消息流,api,flutter,stream,message,Api,Flutter,Stream,Message,我对颤振还不熟悉,我开始创建一个简单的messenger应用程序,使用颤振和颤振流处理API调用以获取消息内容 还创建了消息控制器以更新和刷新消息列表 class MessageService { Client httpClient = Client(); List<MessageModal> _messageList = []; Future<AppConfig> _getApiURL() async { final config = await
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;
}
}
class消息服务{
客户端httpClient=Client();
列表_messageList=[];
Future\u getapirl()异步{
最终配置=等待AppConfig.forEnvironment('dev');
返回配置;
}
未来的getMessageThread(
字符串senderId、字符串receiverId)异步{
var config=await_getapirl();
var url=config.baseUrl+“消息/历史”;
最终响应=等待httpClient.post(url,
标题:{“内容类型”:“应用程序/json”},
正文:json.encode({
“senderId”:senderId,
“接收方”:接收方,
}));
如果(response.statusCode==200){
_messageList=messageListFromJson(response.body);
}否则{
_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;
}
}
class消息服务{
客户端httpClient=Client();
列表_messageList=[];
Future\u getapirl()异步{
最终配置=等待AppConfig.forEnvironment('dev');
返回配置;
}
未来的getMessageThread(
字符串senderId、字符串receiverId)异步{
var config=await_getapirl();
var url=config.baseUrl+“消息/历史”;
最终响应=等待httpClient.post(url,
标题:{“内容类型”:“应用程序/json”},
正文:json.encode({
“senderId”:senderId,
“接收方”:接收方,
}));
如果(response.statusCode==200){
_messageList=messageListFromJson(response.body);
}否则{
_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(),
);
}
},
);
}
StreamBuilder\u buildStreamBuilder(){
返回流生成器(
//流:_messageService.getMessageThread(“UID1”、“UID2”).asStream(),
流:streamController.counter,
initialData:_messageList,
建设者:
(BuildContext上下文,异步快照){
打印(快照数据);
if(snapshot.hasError){
打印(快照错误);
返回中心(
孩子:文本(“出了问题!”),
);
}else if(snapshot.hasData){
列表消息=snapshot.data;
返回_buildMessageHistory(消息);
}否则{
返回中心(
子对象:CircularProgressIndicator(),
);
}
},
);
}
我需要更新消息,并不断更新(发送API调用和获取数据流)消息预览。有谁能帮我这个忙吗