如何访问 HookWidget 中的 StateNotifier 状态?

How to get access to StateNotifier state in HookWidget?

我们可以这样创建一个 StateNotifierProvider

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

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

final counterModel = useProvider(provider);

但是如何获取状态呢?下面的代码过去一直工作到去年,但现在不工作了:

final counterModel = useProvider(provider.state);

现在显示 getter 状态未定义。那么如何获取状态呢?

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

现在,state 是默认 属性 公开的,所以要监听 state,只需:

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 的变化 here