执行flutter pub run build_runner build提示需启用non-nullable特性如何解决
问题解决方案
步骤1:修复依赖版本不匹配问题
当前问题核心底层原因是analyzer依赖版本和Flutter SDK版本不兼容,同时依赖的代码生成器未适配空安全特性导致的构建死锁,按以下顺序操作:
- 先清理本地缓存的依赖和构建缓存,依次执行以下命令:
flutter clean rm -rf .dart_tool/build - 升级所有依赖到适配当前SDK的版本,执行官方提示的升级命令:
如果升级后flutter packages upgradeanalyzer版本还是没有匹配到对应版本,直接在pubspec.yaml的dependency_overrides节点强制指定适配SDK 2.13.0的analyzer版本:dependency_overrides: analyzer: ^2.13.0
步骤2:修复空安全特性未启用的报错
This requires the 'non-nullable' language feature to be enabled报错是因为项目的Dart语言版本配置低于2.12(空安全从Dart 2.12正式支持),修改项目根目录下pubspec.yaml中的环境配置:
environment: sdk: '>=2.13.0 <3.0.0'
修改完成后执行flutter pub get重新拉取依赖。
步骤3:修复hive_generator构建阻塞问题
如果完成前两步后hive_generator相关任务仍阻塞,是旧版本hive_generator和高版本analyzer不兼容导致,直接升级hive全家桶到适配空安全的版本,在pubspec.yaml中更新以下依赖版本:
dependencies: hive: ^2.2.3 hive_flutter: ^1.1.0 dev_dependencies: hive_generator: ^1.1.5 build_runner: ^2.1.10
更新后重新执行构建命令即可:
flutter pub run build_runner build --delete-conflicting-outputs
注意:添加
--delete-conflicting-outputs参数可以自动覆盖冲突的生成文件,避免手动清理旧生成代码的步骤。
内容的提问来源于stack exchange,提问作者Fautor
相关产品推荐
相关产品推荐

