首先引入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);