如何管理Flutter App中的标签之间的状态

时间:2018-09-09 18:12:54

标签: dart flutter hybrid-mobile-app progressive-web-apps

我在应用程序中使用TabBar,需要在第一个标签中获取Input并显示
根据其他标签上的计算结果输出。

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

我在移动应用中相对较新。有人可以帮我吗?

编辑:

现在我可以实现上面所说的内容,但是当我尝试从第一个选项卡访问项目列表时,它在第二个选项卡中引发空异常吗?

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

2 个答案:

答案 0 :(得分:4)

我认为您可能会追求function save_image($base64_string, $image_location) { $ifp = fopen( $image_location, 'wb' ); $data = explode( ',', $base64_string ); fwrite( $ifp, base64_decode( $data[ 1 ] ) ); fclose( $ifp ); return $image_location; } save_image($_POST['b64'], '/you/location'); 。我总是将其添加到AutomaticKeepAliveClientMixin中的屏幕小部件中。这样,当用户在一个选项卡中的字段中输入数据并导航到其他选项卡并返回数据时,数据仍然如您所愿。 然后,当用户执行“保存”之类的操作时,我将处理状态管理(BLoC等)。

答案 1 :(得分:0)

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

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

查看此article。使用不同的架构示例检查this GitHub repository