第一百零三回 全局共享数据之Provider


我们在上一章回中介绍了 组件之间共享数据相关的内容,本章回中将继续介绍该内容.闲话休提,让我们一起Talk Flutter吧。

知识回顾

我们在前面章回中介绍了全局共享数据相关的内容,当时介绍了获取共享数据的三种方法,本章回将介绍其中的一种方法:使用Provider类获取共享数据

使用方法

使用Provoiderof()方法可以获取到共享数据类型的对象,然后就可以使用共享类型提供的getter方法获取对象中的共享数据。不过使用该方法还有一些细节需要说明,详细如下:

  • of()方法是泛型方法需要指定类型,这个类型需要指定为共享数据的类型;
  • of()方法的第一个参数是BuildContext类型,因此需要在组件的build()方法中运行of()方法;
  • of()方法的第二个参数是命名参数listen,它是布尔类型的可选参数,默认值为true;
  • of()方法的第二个参数可以用来优化组件性能,因为可以通完它用来控制是否监听共享数据变化发出的通知;

介绍完Provider类的使用方法后,我们通过具体的代码来演示它的使用方法.

示例代码

class WidgetA extends StatelessWidget {
  const WidgetA({
    super.key,
  });

  
  Widget build(BuildContext context) {
    print('builder of Widget A running');
    ///监听器设置为false时不会更新共享数据,更不会更新整个组件,当前build方法不会被回调
    return Text("Widget A data:${Provider.of<ViewModel>(context, listen: true)._data}");
    // return Text("Widget A data:${Provider.of<ViewModel>(context,listen: false)._data}");
  }
}

在上面的代码中,把Provider和of()方法封装到了一个独立的组件中,一方面可以减少代码的耦合,另一方面可以给of()方法传递BuildContext类型的参数,代码中在使用of()方法时指定了泛型的类型:ViewModel。它是共享数据的类型,详细的定义可以参数上一章回的示例代码。

看官们,关于"全局共享数据之Provider"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值