Flutterでcontextを使わずにlocale情報を取得する
Flutterで多言語対応をしていて、大概はcontextを使った以下のようなコードを配置することで多言語対応は完了する。
AppLocalizations.of(context)!.hello
ただ、いつでもcontextを取得できるとは限らない。
文字列生成のクラスなど、View層以外のクラスで多言語対応が必要なコードを書かないといけないことがある。
そんなときはWidgetsBinding.instance.platformDispatcher.locale
でlocale情報を取得することができる。
書き方としてはこんな感じ。
String sample() {
final locale = WidgetsBinding.instance.platformDispatcher.locale;
if (locale.languageCode == 'ja') {
return 'こんにちは';
}
return 'hello';
}
もともとはWidgetsBinding.instance.window.locale
だったけど、こっちは現在はdeprecatedらしい。
最初、ChatGPTに聞いたらwindowの方を勧められた。
この記事の環境情報
- Flutter 3.10.2
Flutterに関する他の記事を読む
最近の記事を読む
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら
- 「ibproxyは、開発元を検証できないため開けません」の対処方法