我正在尝试根据用户位置显示应用内容。为此,我正在尝试从他们的国家/地区获取languageCode,但无法正常工作。检索到的languageCode对应于设备语言而不是国家。
我是这个意思
@override
Widget build(BuildContext context) {
return ScopedModel<UserModel>(
model: UserModel(),
child: ScopedModelDescendant<UserModel>(builder: (context, child, snapshot) {
return MaterialApp(
title: "APP",
debugShowCheckedModeBanner: false,
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: allTranslations.supportedLocales(),
);
}));
}
在我的supportedLocales是包含所有国家/地区代码的列表的地方:
Iterable<Locale> supportedLocales() => [
const Locale('ar','AE'),
const Locale('ar','BH'),
const Locale('ar','DZ'),
const Locale('ar','EG'),
const Locale('ar','IL'),
const Locale('ar','IQ'),
const Locale('ar','JO'),
const Locale('ar','KW'),
const Locale('ar','LB'),
const Locale('ar','LY'),
const Locale('ar','MA'),
const Locale('ar','MR'),
const Locale('ar','OM'),
const Locale('ar','PS'),
const Locale('ar','QA'),
...
我正在尝试获取正确的languageCode这样做:
String language = Localizations.localeOf(context).languageCode;
但是该方法始终忽略该位置,并采用设备默认语言:(
例如:我的朋友住在巴西,并且他的设备使用的是en-CA语言,他看不到巴西的内容,因为语言代码始终是“ en”而不是“ pt”。
答案 0 :(得分:0)
import dart.io;
...
final localeStr = Platform.localeName; // 'en-US'