我想生成一个AsyncNotifier,它在构建时使用一个参数:

@riverpod
class ListController extends _$ListController {
  late ServiceOne _serviceOne;
  late ServiceTwo _serviceTwo;

  @override
  Future<List<ItemModel>> build(ListModel List) {
    _serviceOne = ref.read(serviceOneServiceProvider);
    _serviceTwo = ref.read(serviceTwoServiceProvider);
    return _fetchListItems(list);
  }

  /// A method I´d like to call
  Future<void> someMethod() async {
    // ... some state mutation operations here...
  }

  /// 
  Future<List<ItemModel> _fetchListItems(list) async {
    // ... fetch models here from e.g. an API
  }
}

这里的问题是,生成器创建了一个ListControllerFamily提供程序,而不是AsyncNotifier.So I'm unable to access the methods like this:

ref.read(listControllerProvider.notifier).someMethod();

.notifierGetter不可用.对于另一个类,我有完全相同的设置,但没有参数,在那里它可以按预期工作.

推荐答案

您的提供程序是family provider,因为您至少为build方法提供了一个参数:

Future<List<ItemModel>> build(ListModel List) {

要访问族提供程序的通告程序,必须将其作为函数调用并提供实参,因为此处的list参数是必需的位置参数:

ref.read(listControllerProvider(someList).notifier).someMethod();

另见:

Flutter相关问答推荐

无法在GroupButton内部正确呈现

try 在Flutter应用程序中传递变量到FirebaseFirestore Where子句

如何使一个悬浮的appbar在flutter?

TextFormfield无法与自动路由一起正常工作

Flutter 应用程序中的Firebase实时数据库中的orderByChild()不适用于我

使用Ffltter CREATE创建项目时,androidManifest.xml中缺少包属性

在带有 flutter 的 Native Android 中,EventChannel.EventSink 始终为 null

如何在Flutter 中使用选定的键和值从 map 列表创建 map

转换函数上传文件上传Uint8List

如何更改中心的圆形进度指示器

我可以定义一次 sharedPreferences 并在需要数据显示到 flutter 应用程序时调用它吗?

改变步进器的线条 colored颜色 Flutter

如何在 flutter 中制作这种类型的扩展瓦片

在 Flutter 中,您什么时候应该更喜欢Widget继承而不是组合?

我的主屏幕上的 FutureBuilder 不断重新加载(但仅在其他屏幕上时)?

为什么这个循环只发生一次?Flutter /dart

Android Studio 模拟器屏幕闪烁

如何将所有行项目平等地放在一行中?Flutter

使用 hydrad_bloc 的预览包

FLUTTER+SQL:在 ListViewBuilder 中显示数据库中的数据