首先引入provider库
打开项目下pubspec.yaml
dependencies:
provider: ^6.0.4
安装
flutter pub get
关键点:
1、Provider内部的DelegateWidget是一个StatefulWidget所以可以更新且具有生命周期。
2、状态共享是使用了 InheritedProvider 这个 InheritedWidget 实现的。
3、巧妙利用 MultiProvider 和 Consumer 封装,实现了组合与刷新颗粒度控制。
Provider常用组件:
ChangeNotifierProvider、MultiProvider、Provider、Consumer、Consumer2
以下先介绍两种我正在用的:
ChangeNotifierProvider用法
1.ChangeNotifierProvider({Key key, @required ValueBuilder<T> builder, Widget child })
ChangeNotifierProvider<UserInfo>(
create: (BuildContext context) {
return UserInfo();
},
builder:(context,child){
},
child: ProviderMainApp(),
),
2.ChangeNotifierProvider.value({Key key, @required T notifier, Widget child })
ChangeNotifierProvider<UserInfo>.value(
value: UserInfo(),
child: const MyApp(),
)
MultiProvider用法
MultiProvider(
providers: [
ChangeNotifierProvider<UserInfo>.value(
value: UserInfo(),
),
],
child: const MyApp(),
);
访问和修改数据
直接访问数据
Provider.of<UserInfo>(context, listen: false).username
调用修改数据方法
Provider.of<UserInfo>(context, listen: false).setname(str);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。