mapEventToState method

  1. @override
Stream<PrefsState> mapEventToState (
  1. PrefsEvent event
)

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");
  }
}