flutter 网站ref.watch(状态通知提供者)与参考网站(状态通知提供者.通知者)

mw3dktmi  于 2022-11-17  发布在  Flutter
关注(0)|答案(1)|浏览(196)

我一直试图找出观察StateNotifierPovider对象与观察它所公开的通知程序之间的区别。正如我们在文档的下一节中所看到的,观察通知程序对象并不会在状态改变时触发对象的build方法。经过实验,看起来就像监视提供程序对象公开了通知程序中的状态,就像ref.read(provider.notifier).state那样。I don“我真的不明白直接监视提供程序与provider.notifier之间的区别,以及为什么在监视通知程序并更改其状态时不触发build方法。

46qrfjad

46qrfjad1#

希望.notifier的文档能够对此进行说明:
获取与此提供程序关联的StateNotifier,而不侦听状态更改。
这通常用于调用StateNotifier上的方法。例如:

Button(
 onTap: () => ref.read(stateNotifierProvider.notifer).increment(),
)

如果StateNotifier示例发生更改,此listenable将通知其通告程序。如果提供程序被刷新或其依赖项之一发生更改,则可能发生这种情况。
https://pub.dev/documentation/riverpod/latest/riverpod/AutoDisposeStateNotifierProvider/notifier.html
因此,ref.watch(provider)侦听状态更改。
ref.watch(provider.notifier)只获取通知程序,但不监听状态更改,而是监听StateNotifier示例的重新创建时间--例如,如果执行ref.refresh(provider),则将重新创建StateNotifier

相关问题