🐛

Flutterでintl_utilsを使っていて、突然多言語化用Dartファイルが生成できなくなった時の対処方法

2023/06/02に公開

起きたことと原因

Flutterを多言語に対応する場合、intl_utilsを使うと便利です。
https://pub.dev/packages/intl_utils
https://plugins.jetbrains.com/plugin/13666-flutter-intl
https://marketplace.visualstudio.com/items?itemName=localizely.flutter-intl

しかし、主にfvmを採用したプロジェクトでintl_utilsを使っていて、次のようなエラーが発生することがあります。

/Users/hoge/fvm/versions/3.3.2/bin/flutter --no-color pub global run intl_utils:generate
intl_utils as globally activated doesn't support Dart 2.18.1, try: flutter pub global activate intl_utils
pub finished with exit code 65
Process finished with exit code 65

上記エラーが発生するのは、次の理由からです。

  • (fvmで)ローカルにインストールしたFlutterと、グローバルにインストールしたFlutterとでバージョンが異なり
  • また、グローバルにインストールしたintl_utilsと、ローカルにインストールしたFlutterとの間で互換性がないため

対処方法

次の「対処方法1.」「対処方法2.」いずれかの方法で、上記エラーが解消します。

対処方法1. グローバルにインストールしたFlutterで、多言語化用Dartファイルを生成する

ローカルでのプロジェクトで、次コマンドを実行することで、多言語化用Dartファイルを生成できます。

flutter pub global run intl_utils:generate

対処方法2. グローバルにインストールしたFlutterのバージョンを、ローカルにインストールしたFlutterのバージョンに合わせる

また、グローバルにインストールしたFlutterのバージョンを、ローカルにインストールしたFlutterのバージョンに合わせることで、再度多言語化用Dartファイルを自動で生成できるようになります。

fvm global <ローカルにインストールしたFlutterのバージョン>
flutter pub global activate intl_utils

(あるいは逆に、ローカルにインストールしたFlutterのバージョンを、グローバルにインストールしたFlutterのバージョンに合わせても、再度多言語化用Dartファイルを自動で生成できるようになります)

参考文献

https://pub.dev/packages/intl_utils

Discussion