@@ -38,6 +38,13 @@ class MyAppState extends State<MyApp> {
38
38
39
39
bool isChangeLanguage = false ;
40
40
var _currentLocale = const Locale ('en' , '' );
41
+ final frenchLocale = const Locale ('fr' );
42
+ final englishLocale = const Locale ('en' );
43
+ final spanishLocale = const Locale ('es' );
44
+ final portugueseLocale = const Locale ('pt' );
45
+ final brazillianPortugueseLocale = const Locale ('pt' , 'BR' );
46
+ final chineseTraditionalLocale = const Locale .fromSubtags (languageCode: 'zh' , scriptCode: 'Hant' , countryCode: 'HK' );
47
+ final chineseSimplifiedLocale = const Locale .fromSubtags (languageCode: 'zh' , scriptCode: 'Hans' , countryCode: 'CN' );
41
48
42
49
@override
43
50
Widget build (BuildContext context) {
@@ -67,9 +74,14 @@ class MyAppState extends State<MyApp> {
67
74
GlobalWidgetsLocalizations .delegate,
68
75
GlobalCupertinoLocalizations .delegate,
69
76
],
70
- supportedLocales: const [
71
- Locale ('fr' ),
72
- Locale ('en' ),
77
+ supportedLocales: [
78
+ englishLocale,
79
+ frenchLocale,
80
+ spanishLocale,
81
+ portugueseLocale,
82
+ brazillianPortugueseLocale,
83
+ chineseTraditionalLocale,
84
+ chineseSimplifiedLocale,
73
85
],
74
86
themeMode: themeMode,
75
87
home: Scaffold (
@@ -177,16 +189,23 @@ class MyAppState extends State<MyApp> {
177
189
children: < Widget > [
178
190
const Text ("Change language:" ),
179
191
const SizedBox (width: 10 ),
180
- DropdownButton (
192
+ DropdownButton < Locale > (
181
193
onChanged: (value) {
182
194
setState (() {
183
- value == 'en' ? _currentLocale = const Locale ( 'en' ) : _currentLocale = const Locale ( 'fr' ) ;
195
+ _currentLocale = value ! ;
184
196
});
185
197
},
186
- value: _currentLocale.languageCode,
187
- items: const [
188
- DropdownMenuItem (value: 'en' , child: Text ('English' )),
189
- DropdownMenuItem (value: 'fr' , child: Text ('French' )),
198
+ value: _currentLocale,
199
+ items: [
200
+ DropdownMenuItem (value: englishLocale, child: const Text ('English' )),
201
+ DropdownMenuItem (value: frenchLocale, child: const Text ('French' )),
202
+ DropdownMenuItem (value: spanishLocale, child: const Text ('Spanish' )),
203
+ DropdownMenuItem (value: portugueseLocale, child: const Text ('Portuguese' )),
204
+ DropdownMenuItem (
205
+ value: brazillianPortugueseLocale, child: const Text ('Brazilian Portuguese' )),
206
+ DropdownMenuItem (
207
+ value: chineseTraditionalLocale, child: const Text ('Chinese (Traditional)' )),
208
+ DropdownMenuItem (value: chineseSimplifiedLocale, child: const Text ('Chinese (Simplified)' )),
190
209
],
191
210
)
192
211
],
0 commit comments