【发布时间】:2021-05-11 11:12:21
【问题描述】:
我是 Flutter 的新手,我正在尝试构建一个聊天应用程序,我已经看过几个教程。要查看聊天消息列表/历史记录,几乎每个教程都在做这样的事情:(我正在缩短代码以达到重点)
List<Widget> messages = api.listOfMessages();
return Column(children: messages);
现在每次有新消息时,messages 都会更新并重新构建该列。我得说“重建”这个词对我来说听起来很昂贵。假设 2 个用户一直在聊天 500 行。现在,每次收到新消息时,都会重新构建 500 行。
我考虑在列表末尾放置一个空小部件。因此,当有新消息到达时,我只需将其插入到那个空的小部件中,然后只重建它:
List<Widget> messages = api.listOfMessages();
return Column(children: [...messages, EmptyWidgetForNewMessage()];
但这看起来像一个 hack,会导致很多嵌套的小部件,因为每条新消息还必须插入另一个 EmptyWidget 等......
如何避免重建以前的消息而只将新消息插入视图? (或者重建整个列表没什么大不了的?)
【问题讨论】: