如何在 Flutter App 中管理选项卡之间的状态

How to Manage state between tabs in Flutter App

我在我的应用程序中使用 TabBar,我需要在第一个选项卡中获取输入并显示
基于其他选项卡上的一些计算的输出。

我可以在第一个选项卡中获得输入,但是当我单击第二个选项卡时,我的状态丢失了。我不确定是否必须在根级别将其设为有状态小部件。

我是移动应用程序的新手。有人可以帮我吗?

编辑:

现在我能够实现上面所说的,但是当我尝试从第一个选项卡访问项目列表时,它在第二个选项卡中抛出 null 异常?

我使用 AutomaticKeepAliveClientMixin 解决了上述问题,如下面的答案所述。

您可能希望使用架构来管理和共享状态。有很多方法来管理状态:

  1. InheritedWidget 将应用程序状态向下传递到小部件层次结构
  2. Scoped 模型库以保存应用程序状态并通知 Widgets 更新
  3. 用于管理应用程序状态和更新小部件的 Redux 库
  4. 业务逻辑组件 (BLoC)

通过不同的架构示例查看此article. Check this GitHub repository

我想你可能想要的是AutomaticKeepAliveClientMixin。我总是将其添加到 TabBarView 内的屏幕小部件中。这样,当用户在一个选项卡的字段中输入数据并导航到其他选项卡并返回时,数据仍然如您所愿。 然后,当用户执行类似 "save" 的操作时,我会处理状态管理(BLoC 等)。