用户云卷云舒 发表于 7 小时前

flutter - rivierpod 新版简易教程

RiverPod2.6.1简易使用

Riverpod的界说:
Riverpod 是 Flutter/Dart 的反应式状态管理框架。
启用Riverpod方式:
在 pubspec.yaml 文件中添加 Riverpod 的依赖,如图所示:
https://i-blog.csdnimg.cn/direct/d8ed567d7759462a801e1dc24b87a056.png
在main.dart文件中,使用 ProviderScope 包裹整个应用,来启用 Riverpod,如图所示:
https://i-blog.csdnimg.cn/direct/99774d405ada48c780fa255861700e35.png
理解传统的Provider和Riverpod的Provider的区别 :
provider是小部件,通常在MultiProvider中配置(传统的 Provider 用法)
在 Riverpod 中,Provider 不再是小部件,而是普通的 Dart 对象,可以在任何地方界说,终极作为全局变量声明。
在 Riverpod 中,Provider 的实现如下:
https://i-blog.csdnimg.cn/direct/da06d1d4ad284a848668e0f1b86e5c91.png
传统的Provider使用BuildContext方式为:
Provider 是基于 InheritedWidget 封装的,读取状态需要 BuildContext,因此只能在 Widget 树中声明使用。
Provider 的界说如下:
Provider(…);
provider使用BuildContext读取方式为:
class Example extends StatelessWidget {
   
@override
Widget build(BuildContext context) {
   
Model model = context.watch<Model>();
}
}
在Riverpod中,使用provider访问widgetRef方式为:
Riverpod中不是使用BuildContext来读取状态,而是使用WidgetRef读取状态。
final modelProvider= Provider<Model>(...)
class Example extends ConsumerWidget{
   
@override
Widget build(BuildContext context, WidgetRef ref) {
   
Model model = ref.watch(modelProvider);
}
}
结论:传统的Provider 使用 StatelessWidget,而 Riverpod 使用 ConsumerWidget。
ConsumerWidget 与 StatelessWidget 的唯一区别是,它有一个额外的 WidgetRef 参数,能够访问和操作全部的 Provider。
传统的Provider和Riverpod 使用Consumer的区别:
Consumer用于在 Widget 树中读取并相应Provider状态的变革。
这是传统Provider使用Consumer的方式如下:
Provider<Model>(...);
Consumer<Model>(
buider:(BuildContext context,Model model,Widget? child){
   
}
)
在Riverpod中,使用Consumer访问provider的方式如下:
final modelProvider = Provider<Model>(...);
Consumer(
builder: (BuildContext context, WidgetRef ref, Widget? child) {
   
Model model = ref.watch(modelProvider);
}
)
结论:传统的Provider使用Counsumer是通过BuildContext获取状态。
Riverpod中provider使用Counsumer是通过widgetRef获取状态。
RiverPod中Provider的范例:
provider用于界说一个值,暴露给其他provider使用。
StateProvider用于暴露一个状态,可以是enum,String,boolean,number。
FutureProvider专门用于处理惩罚Future对象,可以自动处理惩罚异步操作的状态。
StateNotifierProvider是一个用于监听和暴露StateNotifier的提供者&#

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: flutter - rivierpod 新版简易教程