文章目录
- 知识回顾
- 使用方法
- 示例代码
我们在上一章回中介绍了 组件之间共享数据相关的内容,本章回中将继续介绍该内容.闲话休提,让我们一起Talk Flutter吧。
知识回顾
我们在前面章回中介绍了全局共享数据相关的内容,当时介绍了获取共享数据的三种方法,本章回将介绍其中的一种方法:使用Provider类获取共享数据。
使用方法
使用Provoider
的of()
方法可以获取到共享数据类型的对象,然后就可以使用共享类型提供的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"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!