You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Riverpod中创建AutoDisposeAsyncNotifierProviderFamily遇类型错误求助

解决AutoDisposeAsyncNotifierProviderFamily的类型错误

错误的核心原因是你混用了普通AsyncNotifier和family Provider,同时错误地通过构造函数传递family参数。Riverpod的family类型Provider要求对应的Notifier能通过build方法接收family参数,而非自定义带参构造函数。

正确修改步骤:

  1. 调整Notifier继承类:将ParticipantNotifier改为继承AsyncNotifierFamily——这个类专门用于搭配family Provider,它的build方法会自动接收family参数:
class ParticipantNotifier extends AsyncNotifierFamily<Map<String, List<String>>, String> {
  @override
  FutureOr<Map<String, List<String>>> build(String id) {
    // 在这里使用id获取对应事件的参与者数据
    return {};
  }
}
  1. 修正Provider定义:创建Provider的函数无需传递ref和id参数,family参数会自动注入到build方法中:
final participantProvider = AsyncNotifierProvider.autoDispose.family<
    ParticipantNotifier,
    Map<String, List<String>>,
    String
  >(() => ParticipantNotifier());

错误原因解析:

你之前使用的普通AsyncNotifier的build方法是无参的,但family Provider要求对应的Notifier必须能接收family参数,也就是需要用AsyncNotifierFamily。同时你在Provider创建函数里写了(ref, id) => ParticipantNotifier(id),但AsyncNotifierProvider.family要求创建函数是无参的Notifier构造函数,参数是通过build方法注入而非构造函数传递。

你之前能成功创建简单Family(比如StateProvider.family),是因为这类Provider允许直接在创建函数里接收参数,但AsyncNotifierProvider.family的逻辑不同,必须通过AsyncNotifierFamily的build方法获取family参数。

内容的提问来源于stack exchange,提问作者Wessel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:35:31