如果一个复杂的组件需要拆分成一个个小的widget,那么这几个widget之间怎么进行通信?

flutter状态管理插件--provide

github地址:[https://pub.dev/packages/provide](https://pub.dev/packages/provide)

用法类似于vuex,步骤无疑就是 安装->全局注册->使用
而取值、赋值也是一样 通过状态管理器获取全局状态、通过状态管理器提交事务改变值

基础用法:

  • 在项目pubspec.yaml中添加依赖 provide: ^1.0.2,此时最新版本为1.0.2,下载最新版本即可
  • 项目根目录新建provide目录,创建一个计数的案例,如下:

image.png

  • 在入口文件main.dart中修改main方法,注入状态管理,如下:
 void main() {
  var counter = Counter();
  var providers = Providers();
  providers..provide(Provider<Counter>.value(counter));
  runApp(ProviderNode(child: MyApp(),providers: providers,));
 }
  • 获取值:
Provide<Counter>(
  builder: (context,child,counter) {
  return Text('${counter.value}');
},
  • 设置值:
RaisedButton(
    child: Text('递增+1'),
    onPressed: () {
      Provide.value<Counter>(context).increment();
    },
),
最后,项目一定要restart!因为改变了树节点,不重启会报错,踩过坑

MangoGoing
785 声望1.2k 粉丝

开源项目:详见个人详情