import 'package:flutter/material.dart'; import '../../../../core/logging/app_logger.dart'; import '../../data/settings_local_datasource.dart'; class SettingsViewModel extends ChangeNotifier { final SettingsLocalDataSource dataSource; final AppLogger logger; SettingsViewModel({ required this.dataSource, required this.logger, }) { _loadSettings(); } Locale? _locale; ThemeMode _themeMode = ThemeMode.system; Locale? get locale => _locale; ThemeMode get themeMode => _themeMode; static const supportedLocales = [ Locale('en'), Locale('de'), ]; void _loadSettings() { _locale = dataSource.getLocale(); _themeMode = dataSource.getThemeMode(); logger.info('Settings loaded: locale=$_locale, themeMode=$_themeMode'); } Future setLocale(Locale locale) async { _locale = locale; await dataSource.setLocale(locale); logger.info('Locale changed to: ${locale.languageCode}'); notifyListeners(); } Future setThemeMode(ThemeMode mode) async { _themeMode = mode; await dataSource.setThemeMode(mode); logger.info('Theme mode changed to: $mode'); notifyListeners(); } String getLanguageName(Locale locale) { switch (locale.languageCode) { case 'en': return 'English'; case 'de': return 'Deutsch'; default: return locale.languageCode.toUpperCase(); } } }