import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; class LocaleNotifier extends StateNotifier { LocaleNotifier() : super(const Locale('en')) { _loadSavedLocale(); } static const _storageKey = 'preferred_language'; Future _loadSavedLocale() async { final prefs = await SharedPreferences.getInstance(); final code = prefs.getString(_storageKey); if (code == 'ar' || code == 'en') { state = Locale(code!); } } Future _persistLocale(String languageCode) async { final prefs = await SharedPreferences.getInstance(); await prefs.setString(_storageKey, languageCode); } Future toggle() async { final nextCode = state.languageCode == 'en' ? 'ar' : 'en'; state = Locale(nextCode); await _persistLocale(nextCode); } Future toggleLocale() => toggle(); Future setLocale(Locale locale) async { state = locale; await _persistLocale(locale.languageCode); } } final localeProvider = StateNotifierProvider( (ref) => LocaleNotifier(), );