fetchMultiLanguage static method

Future<void> fetchMultiLanguage()

Implementation

static Future<void> fetchMultiLanguage() async {
  try {
    // First try to load language from local storage
    final savedLanguage = await _loadLanguageFromStorage();

    // Fetch languages from API
    final response = await http.get(Uri.parse(ApiConstants.languageUrl));
    if (response.statusCode == 200) {
      final List<dynamic> data = json.decode(response.body);
      multiLang = List<Map<String, dynamic>>.from(data);

      // If we have a saved language, use it as default
      if (savedLanguage != null) {
        defaultLanguage = savedLanguage;
      } else {
        // Otherwise, look for English language
        if (multiLang.isNotEmpty) {
          defaultLanguage = multiLang.firstWhere(
            (lang) => lang['countryName'] == 'English',
            orElse: () => multiLang.first,
          );

          // Save the default language to local storage
          LanguageState()._saveLanguageToStorage(defaultLanguage!);
        }
      }

      // Notify listeners of potential change
      LanguageState()._notifyListenersIfNeeded();
    }
  } catch (e) {
    print('Error fetching languages: $e');
  }
}