0

这是我尝试过的。

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;
}

这与颤振文档中提供的示例几乎相同。我在模拟器上尝试了这个。我将一般语言设置更改为西班牙语。但是,该应用程序仍然呈现英文标题。此外,在 window.dart 文件中,所有语言代码被贬低了。我不知道在这种情况下如何实现区域代码和国家代码的映射。如果有人对此有任何想法,请提供帮助。

4

0 回答 0