如何使用族修饰符将初始值传递给通知程序



这是我的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/autoDisposeNotifier/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;
}

最新更新