Api 如何在Flatter中刷新聊天收件箱的消息流

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

我对颤振还不熟悉,我开始创建一个简单的messenger应用程序,使用颤振和颤振流处理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=[];
}
返回消息列表;
}
}
下面是获取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调用和获取数据流)消息预览。有谁能帮我这个忙吗