Files
flux/lib/core/theme/bloc/theme_bloc.dart

28 lines
894 B
Dart
Raw Normal View History

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
final SharedPreferences _prefs = GetIt.I.get<SharedPreferences>();
ThemeBloc() : super(ThemeState(currentTheme: AppThemeMode.system)) {
2026-04-05 10:06:26 +02:00
on<LoadThemeEvent>((event, emit) {
emit(
state.copyWith(
currentTheme: AppThemeMode.fromValue(
2026-04-06 10:55:56 +02:00
_prefs.getString(PrefKeys.theme.value),
),
2026-04-05 10:06:26 +02:00
),
);
});
2026-04-04 19:25:55 +02:00
on<ChangeThemeEvent>((event, emit) async {
2026-04-06 10:55:56 +02:00
await _prefs.setString(PrefKeys.theme.value, event.appThemeMode.value);
emit(state.copyWith(currentTheme: event.appThemeMode));
2026-04-04 19:25:55 +02:00
});
}
}