Line data Source code
1 : import "package:errorlookup/core/data/repository/settings_repository.dart"; 2 : import "package:errorlookup/core/models/result.dart"; 3 : import "package:errorlookup/core/models/theme_data.dart" as theme_data; 4 : import "package:errorlookup/feature/settings/models/settings_state.dart"; 5 : import "package:flutter_riverpod/flutter_riverpod.dart"; 6 : import "package:get_it/get_it.dart"; 7 : 8 : /// 設定画面のビジネスロジックを扱うVieModel 9 : class SettingsViewModel extends StateNotifier<SettingsState> { 10 1 : SettingsViewModel({required final SettingsRepository settingsRepository}) 11 : : _settingsRepository = settingsRepository, 12 1 : super(const SettingsState()) { 13 4 : _settingsRepository.getThemeSettingStream().listen((event) { 14 4 : state = state.copyWith(theme: event); 15 : }); 16 : } 17 : 18 : final SettingsRepository _settingsRepository; 19 : 20 : /// テーマ設定を保存します 21 1 : Future<Result<bool, Exception>> saveThemeSetting( 22 : {required final theme_data.ThemeMode newMode}) async { 23 2 : return await _settingsRepository.saveThemeSetting(newMode: newMode); 24 : } 25 : } 26 : 27 0 : final settingsViewModelProvider = 28 0 : StateNotifierProvider<SettingsViewModel, SettingsState>((ref) => 29 0 : SettingsViewModel(settingsRepository: GetIt.I<SettingsRepository>()));