import 'dart:async'; import 'package:aitrainer_app/bloc/settings/settings_bloc.dart'; import 'package:aitrainer_app/localization/app_language.dart'; import 'package:aitrainer_app/service/exercise_tree_service.dart'; import 'package:aitrainer_app/service/exercisetype_service.dart'; import 'package:aitrainer_app/service/logging.dart'; import 'package:aitrainer_app/util/session.dart'; import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:flurry/flurry.dart'; part 'session_event.dart'; part 'session_state.dart'; class SessionBloc extends Bloc with Logging { final Session session; SessionBloc({this.session}) : super(SessionInitial()); @override Stream mapEventToState( SessionEvent event, ) async* { try { if (event is SessionStart) { log(" -------- Session starting..."); yield SessionLoading(); // ignore: close_sinks SettingsBloc settingsBloc = event.settingsBloc; await session.fetchSessionAndNavigate(); String lang = AppLanguage().appLocal.languageCode; log("Change lang to $lang"); settingsBloc.add(SettingsChangeLanguage(language: lang)); Flurry.logEvent("Enter"); yield SessionReady(); } } on Exception catch (ex) { yield SessionFailure(message: ex.toString()); } } @override Future close() async { await this.close(); super.close(); } }