如何解决Flutter 3.29.0中Synthetic package output (package:flutter_gen)废弃警告?
Flutter 3.29.0/Dart 3.7.0 flutter_gen废弃警告解决方案
问题概述
升级至Flutter 3.29.0和Dart 3.7.0后,运行Android/iOS应用时控制台出现以下警告:
Synthetic package output (package:flutter_gen) is deprecated: https://flutter.dev/to/flutter-gen-deprecation.
In a future release, synthetic-package will default tofalseand will later be removed entirely.
当前pubspec.yaml相关配置:
flutter: generate: true
已执行操作:
- 运行
flutter clean和flutter pub get - 升级所有依赖至最新版本
- 确认项目中无flutter_gen.yaml文件
解答
1. 消除警告的正确操作
需要切换到非合成包模式,步骤如下:
- 创建
flutter_gen.yaml配置文件并禁用合成包 - 修改项目中所有
package:flutter_gen/...的导入路径,改为直接引用生成的本地文件 - 重新执行
flutter clean+flutter pub get,再重新构建项目
2. flutter_gen.yaml的创建与配置
需要手动创建该文件,放置在项目根目录(与pubspec.yaml同级),内容如下:
synthetic-package: false
3. 官方迁移路径
官方明确了迁移流程,核心包括:
- 保持pubspec.yaml中
flutter.generate: true的配置 - 添加上述
flutter_gen.yaml并设置synthetic-package: false - 替换所有导入语句:例如将
import 'package:flutter_gen/gen_l10n/app_localizations.dart';改为import 'gen_l10n/app_localizations.dart';(具体路径根据生成文件的实际位置调整) - 确保项目依赖的第三方包也完成了对应迁移,避免间接触发警告
内容的提问来源于stack exchange,提问作者saeed z
相关产品推荐
相关产品推荐

