import 'dart:developer'; import 'package:flutter/material.dart'; import '../config/constants/arabe.dart'; import '../config/constants/en.dart'; import '../config/constants/fr.dart'; import '../config/language/language_enum.dart'; import '../main.dart'; class LanguageProvider with ChangeNotifier { // Language currentLangCode = Language.en; // bool get isLTR => currentLangCode == Language.en; Language currentLangCode = Language.fr; bool get isLTR => currentLangCode == Language.fr; Map currentLanguage = en; String? _dropDownLanguageValue; String get dropValue => _dropDownLanguageValue ?? 'English'; LanguageProvider() { getLanguage(); // Initialize language when provider is created } setDropValue(String dropVal) { _dropDownLanguageValue = dropVal; changeLanguage(_dropDownLanguageValue!); } Future changeLanguage(String l) async { sharedPref.setString("Language", l); await getLanguage(); } Future getLanguage() async { String? 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 { // No language stored -> use French by default currentLanguage = fr; currentLangCode = Language.fr; _dropDownLanguageValue = "French"; sharedPref.setString("Language", "French"); // optional } 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();