mapEventToState method
Implementation
@override
Stream<PrefsState> mapEventToState(PrefsEvent event) async* {
if (event is LoadPrefsEvent) {
hideInactiveRoutes = true;
_shuttles = new Map();
// placeholders for now
_buses = {
'87-184': true,
'286-184': true,
'289-184': true,
};
_sharedPrefs = await SharedPreferences.getInstance();
if (!_sharedPrefs.containsKey('darkMode')) {
_sharedPrefs.setBool('darkMode', false);
}
if (!_sharedPrefs.containsKey('pushNotifications')) {
_sharedPrefs.setBool('pushNotifications', true);
}
// modify active routes on app launch
yield PrefsLoadedState(_sharedPrefs, _shuttles, _buses);
} else if (event is SavePrefsEvent) {
yield PrefsSavingState();
_sharedPrefs.setBool(event.name, event.val);
yield PrefsLoadedState(_sharedPrefs, _shuttles, _buses);
} else if (event is PrefsUpdateEvent) {
yield PrefsLoadedState(_sharedPrefs, _shuttles, _buses);
} else if (event is InitActiveRoutesEvent) {
// hide all inactive routes if first time launching app today
if (hideInactiveRoutes) {
hideInactiveRoutes = false;
event.routes.forEach((route) {
_shuttles[route.name] = route.active;
});
}
yield PrefsChangedState();
yield PrefsLoadedState(_sharedPrefs, _shuttles, _buses);
} else if (event is ThemeChangedEvent) {
yield PrefsChangedState();
yield PrefsLoadedState(_sharedPrefs, _shuttles, _buses);
} else {
yield PrefsErrorState(message: "something wrong with prefs_bloc");
}
}