跳到主要內容

本地化的訊息會產生到原始碼中,而不是合成的套件。

摘要

#

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 的支援。

參考資料

#

相關問題

相關文章