gpt4 book ai didi

flutter - Flutter 中的 FutureBuilder 与 initState

转载 作者:IT老高 更新时间:2023-10-28 12:46:50 26 4
gpt4 key购买 nike

我想在我的 Flutter 应用程序中从 SQLite 数据库加载一些数据,并在 ListView 中显示结果。我目前正在使用 FutureBuilder 小部件从数据库中异步获取数据,然后构建 ListView

但是,如果我想对数据进行一些操作 - 例如修改一些信息并将其保存到数据库 - 然后在 ListView 中显示更新的数据,我想我必须先将数据存储在局部变量中,然后调用 setState() 方法来更改数据并重新构建页面。

在不使用 FutureBuilder 的情况下,还有其他更好/首选的方法来实现相同的目标吗?

最佳答案

initState 在您的小部件第一次初始化时被调用。在那里你做了一些初始化操作。

我认为您使用 FutureBuilder 是对的,因为您的 UI 是在从数据库中获取数据后生成的。

我会做以下事情之一:

  • 继续使用 FutureBuilder,然后在编辑数据时进行 async 操作以更新数据库,并在数据库更新后调用 setState 以反射(reflect) UI 上的更改。

  • 使用 StreamBuilder,它类似于 FutureBuilder,但不是只构建一次,而是在每次附加到的流上发生更改时重新构建.这样,您只需要更新数据源,小部件就会使用新数据自行更新。

谈到第二个解决方案,我不能再进一步了,因为我从未实现过允许这样做的 Stream (我一直使用 StreamBuilderFirebase 流)。

第一个解决方案允许您更新显示的数据,而无需再次向数据库询问整个数据集。

我可能会感谢其他人对第二种解决方案的一些反馈,因为我不确定 StreamBuilder 如何管理数据更改。

如果我发现更多信息,我会告诉你的!

关于flutter - Flutter 中的 FutureBuilder 与 initState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54274871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com