Provider理解

2022-08-31  本文已影响0人  三千烦恼风_eefa

Provider通常使用ChangeNotifierProvider配合ChangeNotifier一起来实现状态的管理与Widget的更新。

ChangeNotifierProvider本质上其实就是Widget,它作为父节点Widget,可将数据共享给其所有子节点Widget使用或更新;

  1. 创建model,继承ChangeNotifier,用来实现数据更新的通知并监听数据的变化;

      调用notifyListeners()通知给监听方
    
  2. 创建ChangeNotifierProvider,用来声明Provider,实现跨组建的数据共享;

    用ChangeNotifierProvider将父布局包裹,在父或子节点ChildA通过Provider.of<T>(BuildContext context, {bool listen = true})进行数据操作,可同步更新父与子的数据与UI。其中listen默认为true可监听数据的变化,为false的情况只可读取数据的值
    
  3. 接收共享数据;context.watch<>()和context.read<>()

    不管是在父节点还是在子节点,都可以对ProviderViewModel的数据进行操作和监听。例1在操作与读取时使用的是Provider.of<T>(BuildContext context, {bool listen = true})的方式,为了可以更明确对于Provider的操作,我们可将它替换为context.watch<>()和context.read<>()方式。 我们可以通过源码看到,context.watch<>()和context.read<>()方法其实都是调用Provider.of<T>(BuildContext context, {bool listen = true})来实现
    
上一篇 下一篇

猜你喜欢

热点阅读