import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; abstract class SettingsLocalDataSource { Locale? getLocale(); Future setLocale(Locale locale); ThemeMode getThemeMode(); Future setThemeMode(ThemeMode mode); } class SettingsLocalDataSourceImpl implements SettingsLocalDataSource { final SharedPreferences sharedPreferences; static const String _localeKey = 'locale'; static const String _themeModeKey = 'theme_mode'; SettingsLocalDataSourceImpl({required this.sharedPreferences}); @override Locale? getLocale() { final localeCode = sharedPreferences.getString(_localeKey); if (localeCode == null) return null; return Locale(localeCode); } @override Future setLocale(Locale locale) async { await sharedPreferences.setString(_localeKey, locale.languageCode); } @override ThemeMode getThemeMode() { final index = sharedPreferences.getInt(_themeModeKey); if (index == null) return ThemeMode.system; return ThemeMode.values[index]; } @override Future setThemeMode(ThemeMode mode) async { await sharedPreferences.setInt(_themeModeKey, mode.index); } }