load method

Future<void> load({
  1. String? fallbackLocale,
})

Implementation

Future<void> load({String? fallbackLocale}) async {
  final storage = await DefaultKeyValueStorage.getInstance();
  final storedTheme = storage.getString(_catalogThemeModeStorageKey);
  final storedLanguage = storage.getString(_catalogDisplayLanguageStorageKey);

  _themeMode = switch (storedTheme) {
    'light' => CatalogThemeMode.light,
    'dark' => CatalogThemeMode.dark,
    _ => CatalogThemeMode.system,
  };

  if (storedLanguage != null && storedLanguage.trim().isNotEmpty) {
    _displayLanguage = CatalogDisplayLanguage.fromCode(storedLanguage);
  } else {
    // Use fallback locale if provided, otherwise use platform locale
    if (fallbackLocale != null && fallbackLocale.trim().isNotEmpty) {
      _displayLanguage = CatalogDisplayLanguage.fromCode(fallbackLocale);
    } else {
      final platformLocale = PlatformDispatcher.instance.locale;
      _displayLanguage = CatalogDisplayLanguage.fromCode(
        platformLocale.countryCode == null || platformLocale.countryCode!.isEmpty
            ? platformLocale.languageCode
            : '${platformLocale.languageCode}-${platformLocale.countryCode}',
      );
    }
  }
  _loaded = true;
  notifyListeners();
}