workouttest_app/lib/bloc/menu/menu_bloc.dart
2020-09-19 08:09:43 +02:00

56 lines
1.5 KiB
Dart

import 'dart:async';
import 'package:aitrainer_app/model/workout_tree.dart';
import 'package:aitrainer_app/repository/workout_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<MenuEvent, MenuState> {
final WorkoutTreeRepository menuTreeRepository;
int parent;
MenuBloc({this.menuTreeRepository}) : super(MenuInitial()) {
parent = 0;
}
@override
Stream<MenuState> mapEventToState(
MenuEvent event,
) async* {
try {
if ( event is MenuCreate ) {
yield MenuLoading();
await menuTreeRepository.createTree();
yield MenuReady();
} else if (event is MenuRecreateTree) {
// ie. at language changes
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());
}
}
}