import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'settings_state.dart'; class SettingsCubit extends Cubit { SettingsCubit(this._prefs) : super(_read(_prefs)); final SharedPreferences _prefs; static const _kTheme = 'settings.theme_mode'; static const _kLocale = 'settings.locale'; /// تُقرأ **متزامنة** في الباني: تأخير القراءة يعني ومضة بالثيم الخاطئ عند /// كل إقلاع. static SettingsState _read(SharedPreferences prefs) { return SettingsState( themeMode: switch (prefs.getString(_kTheme)) { 'light' => ThemeMode.light, 'dark' => ThemeMode.dark, _ => ThemeMode.system, }, locale: Locale(prefs.getString(_kLocale) ?? 'ar'), ); } Future setThemeMode(ThemeMode mode) async { emit(state.copyWith(themeMode: mode)); await _prefs.setString(_kTheme, mode.name); } Future setLocale(Locale locale) async { emit(state.copyWith(locale: locale)); await _prefs.setString(_kLocale, locale.languageCode); } }