import 'dart:developer'; import 'package:flutter/material.dart'; import '../config/constants/arabe.dart'; import '../config/constants/english.dart'; import '../config/constants/french.dart'; import '../config/language/language_enum.dart'; import '../main.dart'; class LanguageProvider with ChangeNotifier { Language currentLangCode = Language.fr; bool get isLTR => currentLangCode != Language.ar; Map currentLanguage = fr; String? _dropDownLanguageValue; String get dropValue => _dropDownLanguageValue ?? 'French'; LanguageProvider() { getLanguage(); } setDropValue(String dropVal) { _dropDownLanguageValue = dropVal; changeLanguage(_dropDownLanguageValue!); } Future changeLanguage(String l) async { await sharedPref.setString("Language", l); // unchanged await getLanguage(); } Future getLanguage() async { final storedLanguage = sharedPref.getString("Language"); if (storedLanguage == "Arabic") { currentLanguage = ar; currentLangCode = Language.ar; _dropDownLanguageValue = "Arabic"; } else if (storedLanguage == "French") { currentLanguage = fr; currentLangCode = Language.fr; _dropDownLanguageValue = "French"; } else if (storedLanguage == "English") { currentLanguage = en; currentLangCode = Language.en; _dropDownLanguageValue = "English"; } else { // Default to French only if nothing is stored currentLanguage = fr; currentLangCode = Language.fr; _dropDownLanguageValue = "French"; } notifyListeners(); } String translate(String word) { if (currentLanguage.containsKey(word)) { if (currentLanguage[word] != null) { return currentLanguage[word]!; } else { return word; } } else { return word; } } } final languageSingleton = LanguageProvider();