You need to enable JavaScript to run this app. Flutter运行build_runner时ExpandIterable类型不匹配报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Flutter运行build_runner时ExpandIterable类型不匹配报错如何解决

报错成因及解决方案

问题成因

  • 依赖版本不兼容:项目使用的retrofit_generator版本与analyzer、build_runner或Dart/Flutter SDK版本存在适配冲突,旧版本retrofit生成器未适配新版analyzer返回的ExpandIterable类型,触发类型强转异常。
  • 注解使用错误:代码中对GET类型的请求添加了@FormUrlEncoded()注解,该注解仅适用于携带表单请求体的请求(如POST、PUT等),GET请求无请求体,错误注解会导致生成器解析接口逻辑异常。

解决方案

  • 修正接口注解:删除两个GET接口上的@FormUrlEncoded()注解,修正后的代码如下:
part 'api_services.g.dart';

@RestApi(baseUrl: Preferences.hrmsAPI)
abstract class RestClient {
  factory RestClient(Dio dio) = _RestClient;

  @GET('config')
  Future<WrappedResponse> config();

  @GET('profile')
  Future<WrappedResponse> profile(@Header('Authorization') String token);
}
  • 对齐依赖版本:在pubspec.yaml中使用适配的依赖版本组合,Flutter 3.10+ / Dart 3.0+ 推荐版本如下:
dependencies:
  retrofit: ^4.0.1
  dio: ^5.1.1

dev_dependencies:
  retrofit_generator: ^7.0.1
  build_runner: ^2.4.2
  # 若仍有兼容问题可锁定analyzer版本
  # analyzer: ^5.13.0
  • 重新执行构建:依次执行以下命令清理缓存后重新构建:
  1. 清理项目缓存:flutter clean
  2. 拉取依赖:flutter pub get
  3. 执行构建:flutter pub run build_runner build --delete-conflicting-outputs

内容的提问来源于stack exchange,提问作者Player 2nd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 07:24:01