我们可以像这样创建一个 StateNotifierProvider
:
final provider = StateNotifierProvider((ref) => CounterNotifier());
要访问 HookWidget
中的提供程序,我们可以像这样使用 useProvider
:
final counterModel = useProvider(provider);
但是如何获得状态呢?下面的代码曾经可以工作到去年,但现在不能工作:
final counterModel = useProvider(provider.state);
现在它说未定义 getter 状态。那么如何访问状态?
答案 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 的变化。