这是我尝试过的。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
var countryCode = Localizations.localeOf(context);
var localization = new MyAppLocalizations(countryCode);
return new Scaffold(
appBar: new AppBar(),
body: new Center(
child:new Text(localization.title),
),
);
}
}
class MyAppLocalizations {
MyAppLocalizations(this.locale);
final Locale locale;
static MyAppLocalizations of(BuildContext context) {
return Localizations.of<MyAppLocalizations>(context,
MyAppLocalizations);
}
static Map<String, Map<String, String>> _localizedValues = localeMap();
String get title {
return _localizedValues[locale.languageCode]['title'];
}
}
Map<String, Map<String, String>> localeMap(){
Map<String, Map<String, String>> _localisedMap ={
'en': {
'title': 'Hello World',
},
'es': {
'title': 'Hola Mundo',
},
};
return _localisedMap;
}
这与flutter文档中提供的示例几乎相同。我在模拟器上进行了尝试。我将常规语言设置更改为Spanish。但是,该应用程序仍呈现了英文标题。文件中,所有语言代码均已描述。在这种情况下,我不确定如何实现区域代码和国家/地区代码的映射。 如果有人对此有任何想法,请提供帮助。