如何刷新 Listview.builder 中的单个列表块?扑
How can I refresh an individual List Tile in a Listview.builder? Flutter
情况:
- 我有一个 'Event' 项目,您可以点击 --> 事件详细信息屏幕。
- 具有列表形式的各个子项(日期、参与者、描述)。
- 我将带有
Future Builder
的子项加载到带有 List Tile 的 Listview.builder
中,如下所示:
- 我有一个编辑位置的按钮,它保存到数据库并在本地更新位置变量。这调用
SetState()
.
- 完整列表已更新,即使某些图块没有更改。
问题
有些图块,例如 participants 图块 需要加载图片和其他一些耗时的东西。因此,即使我只是更改位置并更新列表,所有内容都会重新加载,消耗资源并花费太多时间来加载一个简单的字符串。
我在找什么
是否可以只重新加载某个列表块?您会使用另一个小部件而不是 ListView.builder 吗?其他逻辑?感谢任何帮助。
答案扩展[更新]
标记的答案是正确的。我正在使用未来的构建器,这迫使我总是重新加载所有数据。通过将不同的 Streams 与 Streambuilder 一起使用,我能够更改数据库中的数据,它会在 UI 上自动更改,而无需更新状态!魔法.
根据我的观察,Future Builder
是问题所在,Future builder 在 ListView.builder 中重建整个小部件。在你的情况下使用 StreamBuilder
你会看到你所做的改变...
情况:
- 我有一个 'Event' 项目,您可以点击 --> 事件详细信息屏幕。
- 具有列表形式的各个子项(日期、参与者、描述)。
- 我将带有
Future Builder
的子项加载到带有 List Tile 的Listview.builder
中,如下所示: - 我有一个编辑位置的按钮,它保存到数据库并在本地更新位置变量。这调用
SetState()
. - 完整列表已更新,即使某些图块没有更改。
问题 有些图块,例如 participants 图块 需要加载图片和其他一些耗时的东西。因此,即使我只是更改位置并更新列表,所有内容都会重新加载,消耗资源并花费太多时间来加载一个简单的字符串。
我在找什么
是否可以只重新加载某个列表块?您会使用另一个小部件而不是 ListView.builder 吗?其他逻辑?感谢任何帮助。
答案扩展[更新]
标记的答案是正确的。我正在使用未来的构建器,这迫使我总是重新加载所有数据。通过将不同的 Streams 与 Streambuilder 一起使用,我能够更改数据库中的数据,它会在 UI 上自动更改,而无需更新状态!魔法.
根据我的观察,Future Builder
是问题所在,Future builder 在 ListView.builder 中重建整个小部件。在你的情况下使用 StreamBuilder
你会看到你所做的改变...