import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:flux/data/enums.dart'; import 'package:get_it/get_it.dart'; import 'package:shared_preferences/shared_preferences.dart'; part 'theme_events.dart'; part 'theme_state.dart'; class ThemeBloc extends Bloc { static const String _savedThemeKey = "themeModeSetting"; final SharedPreferences _prefs = GetIt.I.get(); ThemeBloc() : super(ThemeState(themeMode: ThemeMode.system)) { on((event, emit) { String savedTheme = _prefs.getString(_savedThemeKey) ?? 'system'; emit( state.copyWith( themeMode: AppThemeMode.values .firstWhere((test) => test.value == savedTheme) .themeMode, ), ); }); on((event, emit) async { await _prefs.setString(_savedThemeKey, event.appThemeMode.value); emit(state.copyWith(themeMode: event.appThemeMode.themeMode)); }); } }