import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:stacked/stacked.dart'; import 'package:yimaru_app/services/secure_storage_service.dart'; import '../app/app.locator.dart'; class LocalizationService with ListenableServiceMixin { // Dependency injection final _secureService = locator(); // Initialization localizationService() { listenToReactiveValues([_selectedLanguage]); } // Languages Map _selectedLanguage = { 'code': 'en', 'language': 'English' }; Map get selectedLanguage => _selectedLanguage; final List> _languages = [ {'code': 'አማ', 'language': 'አማርኛ'}, {'code': 'en', 'language': 'English'}, ]; List> get languages => _languages; bool isSelectedLanguage(String title) => _selectedLanguage['language'] == title; Future setSelectedLanguage( {required BuildContext context, required Map title}) async { _selectedLanguage = title; if (title['code'] == 'አማ') { await setAmharicLanguage(context); } else { await setEnglishLanguage(context); } notifyListeners(); } Future loadSelectedLanguage() async { String language = await _secureService.getString('language') ?? 'en'; if (language == 'en') { _selectedLanguage = {'code': 'en', 'language': 'English'}; } else { _selectedLanguage = {'code': 'አማ', 'language': 'አማርኛ'}; } notifyListeners(); print('SELECTED LANGUAGE: $language $_selectedLanguage'); } Future setAmharicLanguage(BuildContext context) async { await context.setLocale(const Locale('am')); await _secureService.setString('language', 'am'); notifyListeners(); } Future setEnglishLanguage(BuildContext context) async { await context.setLocale(const Locale('en')); await _secureService.setString('language', 'en'); notifyListeners(); } }