如何访问 HookWidget 中的 StateNotifier 状态?

时间:2021-04-18 18:53:02

标签: flutter dart riverpod

我们可以像这样创建一个 StateNotifierProvider

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

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

final counterModel = useProvider(provider);

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

final counterModel = useProvider(provider.state);

现在它说未定义 getter 状态。那么如何访问状态?

1 个答案:

答案 0 :(得分:0)

从 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 的变化。