import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../config/ar.dart'; import '../config/en.dart'; import '../config/lang_enum.dart'; class LanguageProvider with ChangeNotifier { static final LanguageProvider _languageProvider = LanguageProvider._internal(); factory LanguageProvider() { return _languageProvider; } Language currentLangCode = Language.en; Map currentLanguage = en; Future changeLanguage(String l) async { final prefs = await SharedPreferences.getInstance(); switch (l) { case "English": currentLangCode = Language.en; break; case "Arabic": currentLangCode = Language.ar; break; } prefs.setString("Language", l); await getLanguage(); notifyListeners(); } Future getLanguage() async { var currentLang = await SharedPreferences.getInstance(); if (currentLang.getString("Language") == "Arabic") { currentLangCode = Language.ar; currentLanguage = ar; } else { currentLangCode = Language.en; currentLanguage = en; } notifyListeners(); } String translate(String word) { if (currentLanguage.containsKey(word)) { if (currentLanguage[word] != null) { return currentLanguage[word]!; } else { return word; } } else { return word; } } String translateToSpecificLanguage(String word ,Language lang) { lang = Language.ar; final curr = ar; if (curr.containsKey(word)) { if (curr[word] != null) { return curr[word]!; } else { return word; } } else { return word; } } LanguageProvider._internal(); } final languageSingleton = LanguageProvider();