Flutter自定义generator的build_runner不再生成.g文件至项目目录
自定义Generator生成的.g.dart文件仅存于缓存目录,无法同步到项目目录
我之前写了一个基于source_gen和build_runner的自定义Generator,用于模型和XML的相互转换,一直正常工作。但从昨天开始,执行dart run build_runner build时,只有这个自定义Generator不会把.g文件生成到项目对应文件夹里。项目里的ObjectBox、Dio等第三方Generator还能正常生成文件到指定目录,自定义Generator的文件虽然能正确生成在.dart_tool/build/generated缓存目录,但不会同步到项目目录。
build.yaml 配置
targets: $default: builders: generators|annotations: enabled: true builders: generators: target: ':generators' import: 'package:generators/builder.dart' builder_factories: ['fromResponse', 'toRequest','toXmlPart'] build_extensions: {'.dart': ['.g.dart'] } auto_apply: dependents build_to: cache applies_builders: ['source_gen|combining_builder']
build_runner 执行输出(末尾片段)
[FINE] generators on lib/features/login/data/data_sources/loginApi.dart:Running ToXmlPartGenerator [FINE] generators on lib/features/login/domain/entities/services/KACZZV1R1_request.dart:Running ToXmlPartGenerator [FINE] generators on lib/features/login/domain/entities/services/KACZZV1R1_response.dart:Running ToXmlPartGenerator [FINE] generators on lib/features/login/presentation/bloc/login_bloc.dart:Running ToXmlPartGenerator [FINE] generators on lib/features/settings_screen/presentation/bloc/settings_bloc.dart:Running ToXmlPartGenerator [INFO] Build:Running build completed, took 40.5s [INFO] Build:Caching finalized dependency graph... [INFO] Build:Caching finalized dependency graph completed, took 92ms [INFO] Build:Succeeded after 40.6s with 58 outputs (1651 actions)
pubspec.yaml 相关依赖配置
dependencies: flutter: sdk: flutter path: ^1.8.3 path_provider: ^2.0.15 retrofit: any logger: any mocktail: ^0.3.0 objectbox: ^2.0.0 objectbox_flutter_libs: any annotations: path: ../annotations/ analyzer: ^5.13.0 dev_dependencies: flutter_test: sdk: flutter build_runner: ^2.4.4 retrofit_generator: any test: bloc_test: ^9.1.2 generators: path: ../generators/ objectbox_generator: 2.0.0 json_serializable: ^6.7.0
已尝试的无效修复方法
- 确认文件中已正确添加
part 'file.g.dart'声明 - 执行
flutter clean、flutter pub get、flutter pub upgrade - 执行
dart run build_runner build --delete-conflicting-outputs - 删除
.dart_tool/文件夹 - IDE中执行Invalidate caches and restart
- 检查注解使用正确性(此前无问题)
- 以管理员身份运行Android Studio
- 确认
dart run build_runner generate-build-script显示的项目路径正确 - 升级至最新Flutter版本
期望结果
自定义Generator生成的.g.dart文件能正常输出到项目对应文件夹中。
内容的提问来源于stack exchange,提问作者dalibro
相关产品推荐
相关产品推荐

