回答編集履歴

1

もう一つのやり方を追記。

2022/10/31 09:03

投稿

ta.fu
ta.fu

スコア1694

test CHANGED
@@ -1,6 +1,22 @@
1
+ - 案1
1
- mainのrunAppの前に```Intl.defaultLocale = Platform.localeName;```を入れたらどうでしょうか。
2
+ mainのrunAppの前に```Intl.defaultLocale = Platform.localeName;```を入れたらどうでしょうか。
2
- Intlのフォーマットのための言語情報を```Intl.defaultLocale```から取得しているようなので。
3
+ Intlのフォーマットのための言語情報を```Intl.defaultLocale```から取得しているようなので。
3
4
 
4
- OSの言語切り替え時の追従は、LocalizationsDelegateの派生を作り、その中でdefaultLocaleを変更するようにし、それをlocalizationsDelegatesに設定すればいいのだと思います。delegateを登録した場合はmainでの```Intl.defaultLocale = Platform.localeName;```は必要ないです。
5
+ OSの言語切り替え時の追従は、LocalizationsDelegateの派生を作り、その中でdefaultLocaleを変更するようにし、それをlocalizationsDelegatesに設定すればいいのだと思います。delegateを登録した場合はmainでの```Intl.defaultLocale = Platform.localeName;```は必要ないです。
5
6
 
6
- Intl用のデフォルトのdelegateがあってもよさそうな感じがするのですが、それはなさそうです。
7
+ Intl用のデフォルトのdelegateがあってもよさそうな感じがするのですが、それはなさそうです。
8
+
9
+ - 案2
10
+ GlobalMaterialLocalizations.delegateをdelegateに使用しているようなので、以下の様にMaterialLocalizationsのformatShortDateを使用する。
11
+ formatShortDateはyMMMdの形式で出力するようなので。
12
+ ```dart
13
+ @override
14
+ Widget build(BuildContext context) {
15
+ final d = MaterialLocalizations.of(context);
16
+ return Scaffold(
17
+ appBar: AppBar(
18
+ title: const Text("Text"),
19
+ ),
20
+ body: Column(children: [
21
+ Text(d.formatShortDate(DateTime.now())),
22
+ ```