在我想用Riverpod管理其状态的Ffltter 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
变量的那一行:
类型"StateNotifierProvider"使用%2个类型参数声明,但提供了%1个类型参数.
删除StateNotifierProvider<CounterStateNotifier>
中的<CounterStateNotifier>
type参数将删除错误.然而,try 读取提供者并调用其increment
方法(将() => context.read(counterProvider).increment()
设置为ElevatedButton
的onPressed
,然后按下按钮)会产生以下运行时错误:
'increment'
method not found
Receiver: 0
Arguments: []
为什么context.read(counterProvider)
返回int
状态而不是通知程序?我问题第一部分提到的类型参数错误背后的原因是什么?
我应该提到的是,我正在网络上运行我的应用程序(有flutter run -d Chrome
个).