我试图Locale
在应用程序启动时获取用户手机的信息。
Widget
我的方法中有这棵树runApp()
:
@override
Widget build(BuildContext context) {
return MaterialApp(
locale: Locale(Localizations.localeOf(context).languageCode), // This crashes
localizationsDelegates: [
const LocalizationDelegate(), // My custom delegate to get translations
CountryLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
Locale("en"),
Locale("fr"),
],
debugShowCheckedModeBanner: false,
home: Scaffold(
resizeToAvoidBottomInset: false,
body: HomePage(),
)
);
}
Run Code Online (Sandbox Code Playgroud)
该线路locale: Locale(Localizations.localeOf(context).languageCode)
导致崩溃:
Requested the Locale of a context that does not include a Localizations ancestor.
Run Code Online (Sandbox Code Playgroud)
我只是想将此区域设置绑定到我的区域设置,Delegate
而无需在应用程序中进一步进行操作。
到目前为止,我locale: Locale("en")
从en.json
我的LocalizationDelegate
.
我也回答因为@Jaydipsinh是对的,但我犯的错误是我认为我需要这一行:
locale: Locale(Localizations.localeOf(context).languageCode)
Run Code Online (Sandbox Code Playgroud)
反之则无益。
您只需输入supportedLocales
值,如果它们与手机的区域设置匹配,flutter 就会自动使用给定的语言delegates
,例如:
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用 : 检索区域设置,
String locale = Platform.localeName.split('_')[0];
而不会在应用程序启动时崩溃。
归档时间: |
|
查看次数: |
2984 次 |
最近记录: |