跳至主要内容

本地化消息生成到源代码中,而不是合成包。

摘要

#

flutter 工具将不再生成合成 package:flutter_gen 或修改应用程序的 package_config.json。以前引用 package:flutter_gen 的应用程序或工具将改为引用直接生成到应用程序中的源文件。

背景

#

flutter_gen 是一个虚拟(合成)包,由 flutter 命令行工具创建,允许开发者导入该包以访问生成的符号和功能,例如用于 国际化。由于该包未列在应用的 pubspec.yaml 中,并且是通过重写(生成的)package_config.json 创建的,因此产生了大量问题。

迁移指南

#

此更改仅影响 pubspec.yaml 中包含以下内容的用户

yaml
flutter:
  generate: true

创建了一个合成包 (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

  1. 在随附的 l10n.yaml 文件中指定 synthetic-package: false

    yaml
    synthetic-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
  2. 启用 explicit-package-dependencies 功能标志

    sh
    flutter config explicit-package-dependencies

时间线

#

未发布

未发布 + 1,将删除 package:flutter_gen 支持。

参考

#

相关问题

相关文章