我们在上一章回中介绍了"给geolocator插件提交问题"相关的内容,本章回中将介绍如何获取系统语言.闲话休提,让我们一起Talk Flutter吧。
1. 概要介绍
我们在本章回中介绍的系统语言是指en,zh,de这样的语言代码,同时还有与这些语言匹配的地区代码。我们将在本章回中介绍详细的获取方法。
2. 获取方法
获取系统语言使用Localizations组件提供的相关接口就可以。我们通常使用它的localeOf()方法,在该方法中传入BuildContext类型的参数,就可以获取Locale
类型的对象,该对象中存放着系统语言和地区,我们在后面的小节中将通过具体的示例代码来演示。
2.1 获取语言
获取系统语言使用Locale的languageCode属性就可以,它的结果是en,zh,de这样的代码。
2.2 获取地址
获取地区使用Locale的countryCode属性就可以,它的结果是en-US,zh_CN,fr_CA这样的代码。
3.示例代码
///用来获取当前系统中的语言
Locale locale = Localizations.localeOf(context);
debugPrint(locale.countryCode);
debugPrint(locale.languageCode);
debugPrint(locale.toLanguageTag());
debugPrint(locale.toString());
上面的示例代码演示了如何获取当前的系统语言和地区,建议大家自己动手试试,此外,可以修改一下手机上当前的系统语言,这样会有不同的运行结果。
3. 内容总结
我们在本章回中介绍了获取当前系统语言和地区的方法,除此之外,我们还可以通过MaterialApp组件的locale属性主动指定当前app使用的语言和地区,当然了如果
不指定的话默认为跟随系统语言.最后,我们对本章回的内容做一个全面的总结:
- 获取地区使用Locale的countryCode属性就可以;
- 获取系统语言使用Locale的languageCode属性就可以;
语言的地区的代码比较多,不过它们都是由标准规定的,下面是Locale类中的关于它们的解释:
class Locale {
/// Creates a new Locale object. The first argument is the
/// primary language subtag, the second is the region (also
/// referred to as 'country') subtag.
///
/// For example:
///
/// ```dart
/// const Locale swissFrench = Locale('fr', 'CH');
/// const Locale canadianFrench = Locale('fr', 'CA');
/// ```
///
/// The primary language subtag must not be null. The region subtag is
/// optional. When there is no region/country subtag, the parameter should
/// be omitted or passed `null` instead of an empty-string.
///
/// The subtag values are _case sensitive_ and must be one of the valid
/// subtags according to CLDR supplemental data:
/// [language](https://github.com/unicode-org/cldr/blob/master/common/validity/language.xml),
/// [region](https://github.com/unicode-org/cldr/blob/master/common/validity/region.xml). The
/// primary language subtag must be at least two and at most eight lowercase
/// letters, but not four letters. The region subtag must be two
/// uppercase letters or three digits. See the [Unicode Language
/// Identifier](https://www.unicode.org/reports/tr35/#Unicode_language_identifier)
/// specification.
///
}
看官们,与"如何获取当前系统语言"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!