import 'dart:async'; import 'package:aitrainer_app/model/workout_tree.dart'; import 'package:aitrainer_app/repository/menu_tree_repository.dart'; import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:meta/meta.dart'; part 'menu_event.dart'; part 'menu_state.dart'; class MenuBloc extends Bloc { final MenuTreeRepository menuTreeRepository; int parent; MenuBloc({this.menuTreeRepository}) : super(MenuInitial()) { parent = 0; } @override Stream mapEventToState( MenuEvent event, ) async* { try { if ( event is MenuCreate ) { yield MenuLoading(); await menuTreeRepository.createTree(); yield MenuReady(); } else if (event is MenuTreeDown) { // get child menus or exercises yield MenuLoading(); parent = event.parent; menuTreeRepository.getBranch(event.parent); yield MenuReady(); } else if (event is MenuTreeUp) { yield MenuLoading(); // get parent menus or exercises parent = event.parent; menuTreeRepository.getBranch(parent); yield MenuReady(); } else if (event is MenuClickExercise) { yield MenuLoading(); // get exercise page yield MenuReady(); } } on Exception catch(ex) { yield MenuError(message: ex.toString()); } } }