第一百零三回 全局共享数据之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(context,listen: false)._data}");
  }
}

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

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

你可能感兴趣的:(一起Talk,Flutter吧,Flutter状态管理,Provider,Provider.of,Flutter组件之间共享数据)