0
点赞
收藏
分享

微信扫一扫

Flutter获取当前设备的语言

小黑Neo 2022-05-02 阅读 106
flutter

在对flutter应用接入国际化的时候,我们需要获取到当前设备的语言以用于根据系统语言来加载对应的应用语言版本。
在MaterialApp中可以通过LocaleResolutionCallback回调来获取系统的语言:

   localeResolutionCallback: (deviceLocale, supportedLocales) {
              print("当前系统语言:------>${deviceLocale!.countryCode}");
              if(deviceLocale.countryCode=="US"){
                Map? language = SpUtil.getObject(Config.language);
                if(language == null){

                  // Get.updateLocale(Locale("en","US"));
                  language={};
                  language["key"]="en";
                  language["code"]="US";
                  SpUtil.putObject(Config.language,language);
                  LanguageUtils.language="en";
                }else{

                }

              }
              else if(deviceLocale.countryCode=="CN"){
                Map? language = SpUtil.getObject(Config.language);

                if(language == null){
                  // Get.updateLocale(Locale("zh","CN"));
                  language={};
                  language["key"]="zh";
                  language["code"]="CN";
                  SpUtil.putObject(Config.language,language);
                  LanguageUtils.language="zh";
                }else{

                }

              }else{
                Map? language = SpUtil.getObject(Config.language);
                if(language == null){
                  // Get.updateLocale(Locale("en","US"));
                  language={};
                  language["key"]="en";
                  language["code"]="US";
                  SpUtil.putObject(Config.language,language);
                  LanguageUtils.language="en";
                }else{

                }
              }
            },

但是有时候获取到的系统语言为空,所以最好是通过插件用源生方法获取到系统语言,实现如下:
Android实现:

  Locale locale = activity.getResources().getConfiguration().locale;

      result.success(locale.getLanguage());

iOS实现:

      NSString *identifier = [[NSLocale currentLocale] localeIdentifier];
      result(identifier);

传送门:插件地址:https://github.com/qq1057119720/flutter_locale

举报

相关推荐

0 条评论