够了
WidgetsBinding.instance.window.locale.countryCode
PlatformDispatcher.instance.locale
。 - undefinedfinal List<Locale> systemLocales = WidgetsBinding.instance.window.locales;
String isoCountryCode = systemLocales.first.countryCode;
WidgetApp
的 supportedLocales
中添加对每个国家/地区代码的显式支持。它只需检索系统的语言配置,而无需使用第三方插件,这也是 OP 所要求的。 - mrcendreWidgetsBinding.instance.window.locale.countryCode
'window'已被弃用,不应再使用。通过从上下文中查找当前的FlutterView(通过View.of(context))或直接咨询PlatformDispatcher来代替。此功能在v3.7.0-32.0.pre之后被弃用,以准备即将到来的多窗口支持。WidgetsBinding.instance.platformDispatcher.locale.countryCode
dependencies:
devicelocale: ^0.2.1
将其导入您想要的类中
import 'package:devicelocale/devicelocale.dart';
String locale = await Devicelocale.currentLocale;
http://ip-api.com/json
。响应包含您当前所在国家的countryCode
。只需使用dart内置的Locale
类即可获取国家代码和语言。
Locale myLocale = Localizations.localeOf(context);
print(myLocale.countryCode);
print(myLocale.languageCode);
这个解决方案已经发布了。我只是创建了一个安全的函数用于获取国家ISO代码。您可以使用systemLocales
上的languageCode
同时获取语言。
String getCountryISOCode() {
final WidgetsBinding? instance = WidgetsBinding.instance;
if (instance != null) {
final List<Locale> systemLocales = instance.window.locales;
String? isoCountryCode = systemLocales.first.countryCode;
if (isoCountryCode != null) {
return isoCountryCode;
} else {
throw Exception("Unable to get Country ISO code");
}
} else {
throw Exception("Unable to get Country ISO code");
}
}
dependencies:
country_codes: ^2.0.1
使用方法:
await CountryCodes.init(); // Optionally, you may provide a `Locale` to get countrie's localizadName
final Locale deviceLocale = CountryCodes.getDeviceLocale();
print(deviceLocale.languageCode); // Displays en
print(deviceLocale.countryCode); // Displays US
final CountryDetails details = CountryCodes.detailsForLocale();
print(details.alpha2Code); // Displays alpha2Code, for example US.
print(details.dialCode); // Displays the dial code, for example +1.
print(details.name); // Displays the extended name, for example United States.
print(details.localizedName); // Displays the extended name based on device's language (or other, if provided on init)