52 lines
1.4 KiB
Dart
52 lines
1.4 KiB
Dart
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<MenuEvent, MenuState> {
|
|
final MenuTreeRepository 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 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());
|
|
}
|
|
}
|
|
}
|