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

Riverpod的AsyncValue的when方法的loading和error参数不符合官方文档报错

问题根因

你当前遇到的类型不匹配是1.0.0-dev.11之后的dev迭代版本对AsyncValue.when的方法签名做了不兼容调整导致的:
依赖声明如果带了^前缀,即使你指定了^1.0.0-dev.11,pub也会自动拉取更高的兼容dev版本,而更高版本的when方法给loading、error回调新增了额外的可选参数,和你原来的写法不匹配。

解决方案

方案1:固定依赖版本(恢复到之前可正常运行的环境)

  1. 把pubspec.yaml中flutter_riverpod的依赖声明去掉版本前的^,固定为准确版本:
dependencies:
  flutter_riverpod: 1.0.0-dev.11
  1. 依次执行以下操作:
  • 运行flutter clean
  • 删除项目根目录下的pubspec.lock文件
  • 运行flutter pub get
    重新运行项目即可恢复正常。

方案2:适配新版API签名

如果你不想固定版本,直接修改when的回调参数,忽略新增的无用参数即可:

return user.when(
  loading: (_) => CircularProgressIndicator(),
  error: (error, stack, _) => Text('Oops, something unexpected happened'),
  data: (User user) => Text('Hello ${user.name}'),
);

额外建议

dev属于不稳定的测试版本,API会频繁变动,如果是生产项目,建议升级到当前的稳定2.x系列版本,API已经稳定,不会出现这类突发的签名变更问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:45:04