本地化消息生成到源文件,而不是合成包中。
概述
#flutter
工具将不再生成合成的 package:flutter_gen
包或修改应用程序的 package_config.json
文件。
之前引用 package:flutter_gen
的应用程序或工具应直接引用生成到应用程序源代码目录中的源文件。
此外,在使用生成的 i10n 源时,现在需要 generate: true
属性。
背景
#flutter_gen
是一个虚拟(合成)包,由 flutter
命令行工具创建,允许开发者导入该包以访问生成的符号和功能,例如用于国际化。由于该包未在应用程序的 pubspec.yaml
中列出,并通过重写生成的 package_config.json
文件创建,因此产生了许多问题。
迁移指南
#此更改仅影响在 pubspec.yaml
中包含以下条目的应用程序:
yaml
flutter:
generate: true
如果您的应用程序之前在没有此属性的情况下使用了 gen-i10n
,现在则需要此属性。
一个合成包(package:flutter_gen
)由应用程序创建和引用。
dart
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
// ...
const MaterialApp(
title: 'Localizations Sample App',
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
);
有两种方法可以从导入 package:flutter_gen
中迁移。
在随附的
l10n.yaml
文件中指定synthetic-package: false
。l10n.yamlyamlsynthetic-package: false # The files are generated into the path specified by `arb-dir` arb-dir: lib/i18n # Or, specifically provide an output path: output-dir: lib/src/generated/i18n
启用
explicit-package-dependencies
功能标志。shflutter config --explicit-package-dependencies
时间线
#合并版本:3.28.0-0.0.pre
稳定版本:3.32.0
在此更改落地后的下一个稳定版本中,将移除对 package:flutter_gen
的支持。
参考资料
#相关问题
- 问题 73870,首次发现
package:flutter_gen
pub 相关问题。 - 问题 102983,其中概述了
package:flutter_gen
问题。 - 问题 157819,其中讨论了 `--implicit-pubspec-resolution`。
相关文章
- Flutter 应用程序国际化,该功能的规范文档。