使用Build Runner生成代码时遇GetIt依赖注入问题求助
Build Runner执行报错:GetIt+Injectable依赖注入问题
执行Build Runner时遇到错误,尝试通过GetIt配合代码生成器实现依赖注入,错误截图如下:
当前配置与代码
pubspec.yaml 依赖配置
# dependency injection dependencies: injectable: ^1.5.0 get_it: ^7.2.0 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.0 build_runner: ^2.1.5 injectable_generator: ^1.5.3
injection.dart 代码
import 'package:get_it/GetIt.dart'; import 'package:injectable/injectable.dart'; final getIt = GetIt.instance; @InjectableInit() void configureDependencies() => $initGetIt(getIt);
问题定位与解决方案
1. 包版本不匹配(核心问题)
injectable(1.5.0)和injectable_generator(1.5.3)版本不一致,这两个包属于配套工具,版本差异会导致代码生成逻辑不兼容,直接引发Build Runner报错。
解决步骤:
- 修改pubspec.yaml,将两个包版本统一:
dependencies: injectable: ^1.5.3 get_it: ^7.2.0 - 执行
flutter pub get更新依赖 - 重新运行Build Runner并清理冲突文件:
flutter pub run build_runner build --delete-conflicting-outputs
2. 代码层面检查
如果版本统一后仍报错,需确认:
- 所有需要注入的服务类都添加了
@injectable注解 injection.dart文件无语法错误,路径配置正确
内容的提问来源于stack exchange,提问作者Roberto Hermosilla F
相关产品推荐
相关产品推荐

