Jisho-Study-Tool/lib/bloc/theme/theme_bloc.dart

37 lines
980 B
Dart
Raw Normal View History

2021-08-08 23:16:54 +02:00
import 'dart:async';
2021-12-01 23:09:53 +01:00
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
2021-08-08 23:16:54 +02:00
import 'package:shared_preferences/shared_preferences.dart';
2021-12-01 23:09:53 +01:00
import '../../models/themes/theme.dart';
2021-08-08 23:16:54 +02:00
export 'package:flutter_bloc/flutter_bloc.dart';
export 'package:jisho_study_tool/models/themes/theme.dart';
part 'theme_event.dart';
part 'theme_state.dart';
class ThemeBloc extends Bloc<ThemeEvent, ThemeState> {
bool prefsAreLoaded = false;
2021-12-01 23:09:53 +01:00
ThemeBloc() : super(const LightThemeState()) {
2021-08-08 23:16:54 +02:00
SharedPreferences.getInstance().then((prefs) {
2021-12-01 23:09:53 +01:00
prefsAreLoaded = true;
add(
2021-08-08 23:16:54 +02:00
SetTheme(
themeIsDark: prefs.getBool('darkThemeEnabled') ?? false,
),
);
});
}
@override
Stream<ThemeState> mapEventToState(ThemeEvent event) async* {
if (event is SetTheme)
yield event.themeIsDark
? DarkThemeState(prefsAreLoaded: prefsAreLoaded)
: LightThemeState(prefsAreLoaded: prefsAreLoaded);
}
}