localeResolutionCallback method

Locale? Function(Locale? locale, Iterable<Locale> supportedLocales) localeResolutionCallback()

Callback to set initial language.

Pass this to the localeResolutionCallback of MaterialApp, etc. as follows.

初期言語を設定するためのコールバック。

これを下記のようにMaterialAppなどのlocaleResolutionCallbackに渡してください。

MaterialApp(
  locale: appLocalize.locale,
  localizationsDelegates: appLocalize.delegates(),
  supportedLocales: appLocalize.supportedLocales(),
  localeResolutionCallback: appLocalize.localeResolutionCallback(),
);

Implementation

Locale? Function(
  Locale? locale,
  Iterable<Locale> supportedLocales,
) localeResolutionCallback() => (locale, supportedLocales) {
      if (_locale != null) {
        return _locale;
      }
      if (kIsWeb || locale == null) {
        final locale =
            Locale(PlatformDispatcher.instance.locale.languageCode, "");
        for (final supportedLocale in supportedLocales) {
          if (supportedLocale.languageCode == locale.languageCode) {
            _locale ??= supportedLocale;
            return _locale = supportedLocale;
          }
        }
      } else {
        for (final supportedLocale in supportedLocales) {
          if (supportedLocale.languageCode == locale.languageCode ||
              supportedLocale.countryCode == locale.countryCode) {
            _locale ??= supportedLocale;
            return supportedLocale;
          }
        }
        for (final supportedLocale in supportedLocales) {
          if (supportedLocale.languageCode == locale.languageCode) {
            _locale ??= supportedLocale;
            return supportedLocale;
          }
        }
      }
      _locale ??= supportedLocales.first;
      return supportedLocales.first;
    };