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

ChangeNotifierProxyProvider传入3个类型参数报错问题咨询

解决ChangeNotifierProxyProvider多依赖报错的问题

这个报错逻辑很直白——ChangeNotifierProxyProvider本身是仅支持单个依赖Provider的快捷封装类(它其实是ChangeNotifierProxyProvider1的别名),所以你传入3个类型参数必然会触发类型不匹配的错误。

当需要让一个ChangeNotifier同时依赖多个其他Provider时,Flutter的provider库提供了带数字后缀的系列类,比如ChangeNotifierProxyProvider2(对应2个依赖)、ChangeNotifierProxyProvider3(对应3个依赖),以此类推。

正确的实现代码

把你的代码替换成ChangeNotifierProxyProvider2即可,注意它的类型参数顺序是:第一个依赖类型、第二个依赖类型、目标ChangeNotifier类型,同时update回调会自动传入这两个依赖的实例:

ChangeNotifierProxyProvider2<Auth, Mese, Sali>(
  // 必须提供create方法生成初始的Sali实例
  create: (BuildContext ctx) => Sali('', '', []),
  update: (ctx, auth, mese, prevData) => Sali(
    auth.token,
    auth.userId,
    prevData == null ? [] : prevData.sali,
    // 这里你也可以直接使用mese中的数据,比如 mese.someProperty
  ),
)

补充说明

  • 如果后续需要依赖3个Provider,就用ChangeNotifierProxyProvider3,provider库最多支持到ChangeNotifierProxyProvider6。
  • 一定要保证create方法返回合法的初始实例,避免在依赖Provider未初始化时出现空指针异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:04:37