首页 > 解决方案 > 如何访问 HookWidget 中的 StateNotifier 状态?

问题描述

我们可以创建一个 StateNotifierProvider这样的:

final provider = StateNotifierProvider((ref) => CounterNotifier());

要访问 中的提供者HookWidget,我们可以useProvider这样使用:

final counterModel = useProvider(provider);

但是如何获得状态?下面的代码曾经工作到去年,但现在不起作用:

final counterModel = useProvider(provider.state);

现在它说 getter 状态没有定义。那么如何进入状态呢?

标签: flutterdartriverpod

解决方案


从 Riverpod 0.14.0 开始,我们使用 StateNotifier 的方式有点不同。

现在,状态是暴露的默认属性,所以要监听状态,只需:

final counterModel = useProvider(provider);

要访问 StateNotifier 上的任何功能等,请访问通知程序:

final counterModel = useProvider(provider.notifier);

现在,当我们创建 StateNotifierProviders 时,我们包含 StateNotifier 的状态类型:

final provider = StateNotifierProvider<CounterNotifier, CounterModel>((ref) => CounterNotifier());

在此处查看更多关于 0.13.0 -> 0.14.0 的变化。


推荐阅读