可以尝试使用ListView.builder来展示消息,这样可以实现延迟加载,只加载可见的部分,减少屏幕频闪的问题。具体实现可以参考以下代码:

1.在State中添加一个ScrollController来控制ListView的滚动:

final ScrollController _scrollController = ScrollController();

2.在ListView.builder中使用该ScrollController:

ListView.builder( controller: _scrollController, itemBuilder: (BuildContext context, int index) { // 构建消息布局 }, itemCount: Global.messages.length, )

3.在_addMessage方法中添加滚动到底部的逻辑:

void _addMessage(types.Message message) { setState(() { Global.messages.insert(0, message); }); // 滚动到底部 if (_scrollController.hasClients) { _scrollController.animateTo( _scrollController.position.minScrollExtent, duration: Duration(milliseconds: 300), curve: Curves.easeOut, ); } }

这样就可以实现更流畅的消息展示了

现在这个代码收到消息后展示在屏幕频闪很严重可以让他更流畅的输出吗import dartasync;import packageachievement_viewachievement_viewdart;import packagediodiodart;import packagefluttermaterialdart;import packagemuse_nepu_coursechatflutter

原文地址: https://www.cveoy.top/t/topic/fDjh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录