如何防止存储在 List 中的 Stateful Widget 被释放?

Posted

技术标签:

【中文标题】如何防止存储在 List 中的 Stateful Widget 被释放?【英文标题】:How to prevent Stateful Widget stored in List to be disposed? 【发布时间】:2020-07-22 13:53:56 【问题描述】:

让我从解释问题开始。我有几个按钮是根据从服务器获取的数据创建的。在每个按钮上单击我需要创建并显示一个小部件,它将向我展示一些数据(这个小部件也是动态构建的)。此小部件的状态必须在应用程序的生命周期内保留。 (例如,如果我单击另一个按钮并显示不同的小部件,我需要能够单击第一个按钮并以保留状态显示第一个小部件)。按钮的数量也可以在应用程序生命周期内更改。

我尝试使用 IndexedStack 来实现这一点,但是当按钮的数量发生变化时,我需要将“页面”添加到 IndexedStack,因此我需要重新创建一个新的 IndexedStack,它将包含我的一些旧小部件,所以我拉小部件从列表中或在需要时创建新列表。这很好用,除了 Flutter 在存储在列表中的小部件上调用 dispose() 方法。我尝试使用 AutomaticKeepAliveClientMixIn 但没有帮助。

我猜这与小部件与父级分离有关,但是当我将它们重新附加到新父级(新索引堆栈)时,Flutter 无法正确解决此问题。

有什么想法吗?

【问题讨论】:

【参考方案1】:

尝试将数据存储到本地存储或 sqlite 以获取持久性数据。

【讨论】:

以上是关于如何防止存储在 List 中的 Stateful Widget 被释放?的主要内容,如果未能解决你的问题,请参考以下文章

Apache Flink: Stateful Functions 3.2.0 发布!

A Survey on the Security of Stateful SDN Data Planes

如何防止redisgraph中的数据重复?

如何防止sql存储过程中的重复更新

从 Flutter 中的 Stateful Widget 返回数据

如何将数据从扩展数据表源类传递到 StateFul 类