【发布时间】:2021-07-17 20:49:58
【问题描述】:
在我想用 Riverpod 管理状态的 Flutter 2.0.5 应用程序的上下文中,我想我可以像这样声明 StateNotifierProvider:
import 'package:flutter_riverpod/flutter_riverpod.dart';
final counterProvider = StateNotifierProvider<CounterStateNotifier>((ref) => CounterStateNotifier());
class CounterStateNotifier extends StateNotifier<int> {
CounterStateNotifier([int count = 0]) : super(count);
void increment() => state++;
}
但 Android Studio(以及后来的 Dart 编译器)抱怨我声明 counterProvider 变量的那一行:
使用 2 个类型参数声明类型“StateNotifierProvider”,但给出了 1 个类型参数。
删除StateNotifierProvider<CounterStateNotifier> 中的<CounterStateNotifier> 类型参数会消除错误。但是,尝试读取提供程序并调用其increment 方法(将() => context.read(counterProvider).increment() 设置为onPressed 的ElevatedButton,然后按下按钮)会出现以下运行时错误:
'increment'
method not found
Receiver: 0
Arguments: []
为什么context.read(counterProvider) 返回int 状态而不是通知程序?我的问题第一部分提到的类型参数错误背后的原因是什么?
我应该提到我正在网络上运行我的应用程序(flutter run -d Chrome)。
【问题讨论】: