2026-04-04 19:25:55 +02:00
|
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
|
|
|
import 'package:equatable/equatable.dart';
|
2026-04-05 10:06:26 +02:00
|
|
|
import 'package:flux/data/enums.dart';
|
|
|
|
|
import 'package:get_it/get_it.dart';
|
|
|
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
2026-04-04 19:25:55 +02:00
|
|
|
|
|
|
|
|
part 'theme_events.dart';
|
|
|
|
|
part 'theme_state.dart';
|
|
|
|
|
|
|
|
|
|
class ThemeBloc extends Bloc<ThemeEvent, ThemeState> {
|
2026-04-05 10:06:26 +02:00
|
|
|
static const String _savedThemeKey = "themeModeSetting";
|
|
|
|
|
final SharedPreferences _prefs = GetIt.I.get<SharedPreferences>();
|
2026-04-06 08:48:10 +02:00
|
|
|
ThemeBloc() : super(ThemeState(currentTheme: AppThemeMode.system)) {
|
2026-04-05 10:06:26 +02:00
|
|
|
on<LoadThemeEvent>((event, emit) {
|
|
|
|
|
emit(
|
|
|
|
|
state.copyWith(
|
2026-04-06 08:48:10 +02:00
|
|
|
currentTheme: AppThemeMode.fromValue(
|
|
|
|
|
_prefs.getString(_savedThemeKey),
|
|
|
|
|
),
|
2026-04-05 10:06:26 +02:00
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
});
|
2026-04-04 19:25:55 +02:00
|
|
|
on<ChangeThemeEvent>((event, emit) async {
|
2026-04-05 10:06:26 +02:00
|
|
|
await _prefs.setString(_savedThemeKey, event.appThemeMode.value);
|
2026-04-06 08:48:10 +02:00
|
|
|
emit(state.copyWith(currentTheme: event.appThemeMode));
|
2026-04-04 19:25:55 +02:00
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|