Flutter - 基于设备的动态语言

El *_*bre 5 localization flutter

我正在尝试使用本地化获取移动国家代码和语言代码

Widget build(BuildContext context) {
        Locale myLocale = Localizations.localeOf(context);
        print(myLocale.countryCode);
        print(myLocale.languageCode);
        return MaterialApp(
          title: 'Title',
          debugShowCheckedModeBanner: false,
          theme: ThemeData(
            primarySwatch: Colors.blue,       
          ),
          home: LoginPage(),
          localizationsDelegates: [
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
          ],
          supportedLocales: [
            Locale('es' 'ES'),
          ],
        );
      }
Run Code Online (Sandbox Code Playgroud)

但是返回“未找到本地化祖先”。有人知道这样做的正确方法是什么?

Maz*_*him 12

使用LocaleResolutionCallback来获得设备的语言环境:

 Widget build(BuildContext context) {
    Locale myLocale ;

    return MaterialApp(
      title: 'Title',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,       
      ),
      home: LoginPage(),
      localeResolutionCallback: (deviceLocale, supportedLocales) {
      myLocale = deviceLocale ; // here you make your app language similar to device language , but you should check whether the localization is supported by your app
      print(myLocale.countryCode);
      print(myLocale.languageCode);
      }
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: [
        Locale('es' 'ES'),
      ],
    );
  }
Run Code Online (Sandbox Code Playgroud)