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

搭配auto_route的Flutter build_runner卡顿后无信息报错求助

排查 Flutter build_runner + auto_route 无报错卡顿后失败的问题

执行命令 flutter pub run build_runner build --delete-conflicting-outputs 时,搭配 auto_route 仅卡顿数分钟后无任何报错信息就失败,该命令在其他项目可正常运行,说明问题仅存在于当前项目。当前项目依赖清单如下:

environment:
  sdk: '>=2.18.6 <3.0.0'

dependencies:
  flutter:
    sdk: flutter
  bloc: ^8.1.0
  flutter_bloc: ^8.0.1
  equatable: ^2.0.5
  intl: ^0.18.0
  formz: ^0.4.0
  uuid: ^3.0.4
  shared_preferences: ^2.0.8
  flutter_secure_storage: ^8.0.0
  cupertino_icons: ^1.0.2
  auto_route: ^5.0.4
  auto_route_generator: ^5.0.3

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^2.0.0
  build_runner: ^2.3.3

已尝试执行 flutter pub cache repair、dart pub get、flutter pub get,以及卸载重装 build_runner、auto_route 和 auto_route_generator,但问题仍未解决,以下是具体排查建议:

  • 检查 auto_route 配置文件语法
    仔细核对路由定义文件(如 app_router.dart)的注解与配置:确认@MaterialAutoRouter参数是否合法,所有页面是否正确添加@RoutePage()注解,是否存在路由名称重复、参数类型不匹配等问题。这类隐性语法错误往往不会抛出明确报错,但会导致生成器停滞退出。

  • 启用 build_runner 详细日志
    执行命令时添加 verbose 参数,查看生成器的具体执行流程,定位卡顿环节:

    flutter pub run build_runner build --delete-conflicting-outputs -v
    

    通过日志可以看到生成器在处理哪个文件时停滞,快速锁定问题源。

  • 排查项目异常文件与循环依赖
    检查项目中是否存在循环导入的 Dart 文件,或存在语法错误的文件(如未闭合的括号、缺失分号)。这类问题会卡住 build_runner 的解析器,导致无报错退出。可尝试临时注释部分页面的路由配置,逐步排查出问题页面。

  • 手动清理缓存文件
    删除项目根目录下的 .dart_tool 和 build 文件夹,再重新执行 flutter pub get 和 build_runner 命令。自动清理可能无法彻底清除旧缓存,手动清理能避免缓存冲突。

  • 调整依赖版本适配 SDK
    当前 SDK 版本为 2.18.6,尝试降低 auto_route 和 build_runner 的版本以适配:比如将 auto_route 降至 5.0.0,build_runner 降至 2.2.0,重新安装依赖后再执行构建,排除版本兼容性问题。

  • 排查第三方依赖冲突
    临时移除 bloc、flutter_bloc 等非核心依赖,仅保留 auto_route 相关与基础 Flutter 依赖,执行 build_runner 命令。若能正常运行,再逐个加回依赖,排查出冲突的第三方包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:22:15