flutter_gen が非推奨になったので新仕様に対応する | Flutter 3.29.0
Flutter SDK を更新した影響なのか、気づいたら以下の警告が出力されるようになっていました。flutter_gen は確か、多言語化で使っていたような…非推奨?!
Synthetic package output (package:flutter_gen) is deprecated: https://flutter.dev/to/flutter-gen-deprecation. In a future release, synthetic-package will default to `false` and will later be removed entirely.
Synthetic package output(package:flutter_gen)は非推奨になりました。将来のリリースでは、synthetic-package のデフォルトが false になり、最終的には完全に削除される予定です。
さて、この件に関する公式のドキュメントは、以下になります。
Localized messages are generated into source, not a synthetic package.
https://docs.flutter.dev/release/breaking-changes/flutter-generate-i10n-source
l10n.yaml は今日まで、以下の内容にしていました。
arb-dir: lib/l10n template-arb-file: app_en.arb output-localization-file: app_localizations.dart
公式に示された対応方法は二通りありますが、簡単な方(理解できた方)に従うと、ここに「synthetic-package: false」の一行を追加するだけです。
synthetic-package: false arb-dir: lib/l10n template-arb-file: app_en.arb output-localization-file: app_localizations.dart
ただ、これだと「lib/l10n」に生成ファイルが追加されるので、かなり邪魔です。
加えて「template-arb-file」も「output-localization-file」も、デフォルトが「app_en.arb」と「app_localizations.dart」なので、敢えて書く必要がないです。
ならば、公式のサンプルをそのまま採用した方が良い…と判断しました。以下の通りです。
synthetic-package: false arb-dir: lib/i18n output-dir: lib/src/generated/i18n
※ちなみに、l10n は Localization、i18n は Internationalization の略
クラス名の変更はなく「AppLocalizations」のままなので、import を変更すれば対応完了です。
- 従来
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
- 新仕様
import 'src/generated/i18n/app_localizations.dart';
では「Pub get」しましょう。
コメント
コメントを投稿