Flutter 获取当前时区/代号总是 en_US

Flutter get current time zone / code name is always en_US

我的应用程序有问题...我无法获得应用程序的正确电流 Locale

这个:

print(Localizations.localeOf(context));

总是给我:

en_US

但我实际上在德国。我在 Android 和 iPhone 模拟器以及真实设备上都试过了。它总是给我“en_US”:(

我这样创建 MaterialApp

 MaterialApp(
    title: 'ProjectX',
    theme: ThemeData(
      primarySwatch: ColorService.createMaterialColor(AppColors.secondary),
      backgroundColor: AppColors.white,
      scaffoldBackgroundColor: AppColors.white,
      visualDensity: VisualDensity.adaptivePlatformDensity,
      fontFamily: AppTextStyles.mainFont,
    ),
    initialRoute: isOnline
        ? showOnboarding
            ? '/onboarding'
            : '/'
        : '/offline',
    onGenerateRoute: AppRouter.generateRoute,
    locale: Locale('de', 'DE'),
    localizationsDelegates: [
      AppLocalizationsDelegate(),
      GlobalMaterialLocalizations.delegate,
      GlobalWidgetsLocalizations.delegate,
      GlobalCupertinoLocalizations.delegate,
      DefaultCupertinoLocalizations.delegate,
    ],
  ),

这是一个已知错误吗?我在这里错过了什么?

设备的当前语言是德语吗?

在 Locale 中,我认为它来自键盘语言。

喜欢:如果我的键盘语言是美国英语,即使我住在巴西,语言环境也会变成 en_US。

将 supportedLocales 命名参数添加到 MaterialApp,如 Internationalization documentation 中所述。

 MaterialApp(
title: 'ProjectX',
theme: ThemeData(
  primarySwatch: ColorService.createMaterialColor(AppColors.secondary),
  backgroundColor: AppColors.white,
  scaffoldBackgroundColor: AppColors.white,
  visualDensity: VisualDensity.adaptivePlatformDensity,
  fontFamily: AppTextStyles.mainFont,
),
initialRoute: isOnline
    ? showOnboarding
        ? '/onboarding'
        : '/'
    : '/offline',
onGenerateRoute: AppRouter.generateRoute,
locale: Locale('de', 'DE'),
supportedLocales: [Locale('de', 'DE')],
localizationsDelegates: [
  AppLocalizationsDelegate(),
  GlobalMaterialLocalizations.delegate,
  GlobalWidgetsLocalizations.delegate,
  GlobalCupertinoLocalizations.delegate,
  DefaultCupertinoLocalizations.delegate,
],
),