Flutter 使用 Provider 实现不相关页面状态数据共享

前言

我们之前讲述了 Provider 实现状态管理的两种方式:

  • 将 Provider 置于顶层,使得所有应用子页面都可以访问状态数据;
  • 使用 MultiProvider 实现嵌套的组件管理;

那就来了一个问题,两个不相关的页面可以实现状态共享吗?比如我们的动态添加和编辑页面,属于同一个层级,如果不考虑利用他们的父级组件完成状态共享,那么两个页面就是平行不相关的,但是他们很多方法和数据都是可以共用的。对于这种情况,Provider 提供了一种方式来实现状态共享,那就是两个页面共用同一个状态对象。

MyChangeNotifier variable;

ChangeNotifierProvider.value(
  value: variable,
  child: ...
)

使用 ChangeNofitierProvider.value 方法可以利用一个已有的对象提供状态管理,而且这个已有的对象可以供其他组件共用。

改造状态管理类

添加和编辑页面的很多方法和数据是可以共用的,例如:

  • handleTextFieldChanged:文本输入值改变时更新对应表单内容;
  • handleClear:点击清除按钮时清除对应表单的内容;
  • handleImagePicked:图片选择控件选定图片后更新图片;
  • _imageFile:选择的图片文件。
  • _fo

你可能感兴趣的:(Flutter,入门与实战,flutter,状态管理,ios,android,前端)