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」しましょう。

関連

参考

コメント

このブログの人気の投稿

Breaking Taboos and Reaching 100K Downloads: The Journey and Future of the Masturbation Tracker App "Ei Nano"