flutter - rivierpod 新版简易教程

RiverPod2.6.1简易使用

Riverpod的定义:
Riverpod 是 Flutter/Dart 的反应式状态管理框架。
启用Riverpod方式:
在 pubspec.yaml 文件中添加 Riverpod 的依赖,如图所示:
在这里插入图片描述

在main.dart文件中,使用 ProviderScope 包裹整个应用,来启用 Riverpod,如图所示:
在这里插入图片描述

理解传统的Provider和Riverpod的Provider的区别 :
provider是小部件,通常在MultiProvider中配置(传统的 Provider 用法)

在 Riverpod 中,Provider 不再是小部件,而是普通的 Dart 对象,可以在任何地方定义,最终作为全局变量声明。
在 Riverpod 中,Provider 的实现如下:
在这里插入图片描述

传统的Provider使用BuildContext方式为:
Provider 是基于 InheritedWidget 封装的,读取状态需要 BuildContext,因此只能在 Widget 树中声明使用。
Provider 的定义如下:
Provider(…);
provider使用BuildContext读取方式为:

class Example extends StatelessWidget {
   

Widget build(BuildContext context) {
   
Model model = context.watch<Model>();
}
}

在Riverpod中,使用provider访问widgetRef方式为:
Riverpod中不是使用BuildContext来读取状态,而是使用WidgetRef读取状态。

final modelProvider= Provider<Model>(...)
class Example extends ConsumerWidget{
   

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的提供者&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值