Flutter中全局状态管理provider包的基本使用

首先引入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);
作者:ClearBoth原文地址:https://segmentfault.com/a/1190000043306208

%s 个评论

要回复文章请先登录注册