エラー全文
error: Target of URI doesn't exist: 'package:flutter_gen/gen_l10n/app_localizations.dart'.
とか
error: Undefined name 'AppLocalizations'.
とかのエラーが、Flutter3.32
系から発生するようになりました
原因
Flutter 3.32.0
以降、国際化(i18n)に関する重要な変更が導入され、
flutter gen-l10n
コマンドの挙動が変更され、従来のpackage:flutter_gen
の使用が非推奨となったため
移行手順
移行の対象か確認
以下のようにgenerate: true
としているプロジェクト
pubspec.yaml
flutter:
generate: true
手順1
l10n.yaml に synthetic-package: false を追加
+ synthetic-package: false
arb-dir: lib/i18n # .arbファイルが配置されていたディレクトリを指定 自分は`lib/localization`でした
- output-localization-file: app_localizations.dart
+ output-dir: lib/generated/i18n # 新規でapp_localizations.dart等が格納されるディレクトリを指定
手順2
app_localizationsを作成する
flutter pub get
手順1で設定したoutput-dir
にlib/generated/i18n/app_localizations.dart
や
lib/generated/i18n/app_localizations_ja.dart
が作成される
手順3
インポートパスの修正
+ import 'package:your_app_name/generated/i18n/app_localizations.dart';
- import 'package:flutter_gen/gen_l10n/app_localizations.dart';
手順3
flutter config
コマンドの使用(オプション)
明示的なパッケージ依存関係の管理を有効化する
flutter config --explicit-package-dependencies
参考