import 'dart:async'; import 'package:aitrainer_app/bloc/menu/menu_bloc.dart'; import 'package:aitrainer_app/model/exercise_type.dart'; import 'package:aitrainer_app/repository/exercise_repository.dart'; import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter_form_bloc/flutter_form_bloc.dart'; import 'package:meta/meta.dart'; part 'exercise_new_event.dart'; part 'exercise_new_state.dart'; class ExerciseNewBloc extends Bloc { final ExerciseRepository exerciseRepository; final MenuBloc menuBloc; double quantity = 12; double unitQuantity = 30; @override ExerciseNewBloc({this.exerciseRepository, this.menuBloc, ExerciseType exerciseType}) : super(ExerciseNewInitial()) { exerciseRepository.setUnit(exerciseType.unit); } @override Stream mapEventToState(ExerciseNewEvent event) async* { try { if (event is ExerciseNewLoad) { yield ExerciseNewLoading(); yield ExerciseNewReady(); } else if ( event is ExerciseNewQuantityChange ) { yield ExerciseNewLoading(); exerciseRepository.setQuantity(event.quantity); quantity = event.quantity; yield ExerciseNewReady(); } else if ( event is ExerciseNewQuantityUnitChange ) { yield ExerciseNewLoading(); exerciseRepository.setUnitQuantity(event.quantity); unitQuantity = event.quantity; yield ExerciseNewReady(); } else if ( event is ExerciseNewSubmit ) { yield ExerciseNewLoading(); await exerciseRepository.addExercise(); menuBloc.add(MenuTreeDown(parent: 0)); yield ExerciseNewReady(); } } on Exception catch (e) { yield ExerciseNewError(message: e.toString()); } } }