这是我的Notifier
:
class Counter extends Notifier<int> {
final int initial;
Counter(this.initial);
@override
int build() => initial;
}
我需要将initial
值传递给它,但我再也不能使用family
修饰符了。
// Error
final counterProvider = NotifierProvider.family<Counter, int, int>((initial) {
// How to get the initial value to pass here?
return Counter(initial);
});
使用family
/autoDispose
和Notifier
/AsyncNotifier
的语法不同。您应该更改继承类型
所以不是:
final provider = NotifierProvider(MyNotifier.new);
class MyNotifier extends Notifier<Value> {
使用family
,您应该执行以下操作:
final provider = NotifierProvider.family(MyNotifier.new);
class MyNotifier extends FamilyNotifier<Value, Param> {
同样的道理也适用于CCD_ 9。
要添加到@Rémi Rousselet的答案中,使用生成器(这是使用riverpod的推荐方法(的方法如下:
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'counter.g.dart';
@riverpod
class Counter extends _$Counter {
@override
int build(int initial) => initial;
}