升级依赖后执行dart migrate或build_runner报annotationAst未初始化如何解决
错误原因
这个报错是Dart官方analyzer包的已知版本缺陷导致,与项目业务代码的注解、初始化逻辑无关。
在Dart 2.12~2.14版本区间做空安全迁移,或是运行依赖analyzer的代码生成工具(如build_runner、moor_generator)时,analyzer解析常量注解的过程中会出现内部状态初始化时序异常,进而抛出这个内部错误。
解决方案
- 强制锁定兼容的analyzer版本
在项目根目录pubspec.yaml中添加dependency_overrides配置,强制项目所有依赖统一使用无缺陷的analyzer版本:
- 强制锁定兼容的analyzer版本
dependency_overrides: # Flutter 2.x项目使用2.8.0或3.4.1版本均可 analyzer: ^3.4.1 # Flutter 3.x项目可以使用^4.7.0版本
配置完成后执行flutter pub get更新依赖,再重新运行之前报错的dart migrate或build_runner构建命令即可。
- 清理本地缓存重试
如果版本覆盖后仍报错,依次执行以下命令清理所有本地编译、分析缓存后重试:
- 清理本地缓存重试
flutter clean rm -rf .dart_tool flutter pub get
- 临时跳过常量校验推进迁移
如果仅在执行dart migrate时报错,可以添加参数跳过部分常量分析逻辑,临时绕过问题完成迁移:dart migrate --skip-constant-checks
注意该参数仅作为临时方案使用,迁移完成后建议还是修复analyzer版本依赖,避免后续代码生成环节反复触发同类问题。
- 临时跳过常量校验推进迁移
- 同步升级moor相关依赖
如果使用的是旧版moor(现更名为drift),可以同步升级moor相关依赖到空安全兼容版本,避免旧版moor_generator间接引入有缺陷的analyzer版本:
- 同步升级moor相关依赖
dependencies: moor: ^4.6.1+1 dev_dependencies: moor_generator: ^4.6.0
内容的提问来源于stack exchange,提问作者DNS
相关产品推荐
相关产品推荐

