import 'package:aitrainer_app/bloc/exercise_plan/exercise_plan_bloc.dart'; import 'package:aitrainer_app/model/exercise_plan_detail.dart'; import 'package:aitrainer_app/repository/exercise_plan_repository.dart'; import 'package:flutter_form_bloc/flutter_form_bloc.dart'; class ExercisePlanCustomerFormBloc extends FormBloc { final ExercisePlanRepository exercisePlanRepository; final ExercisePlanBloc planBloc; final serieField = TextFieldBloc( validators: [ FieldBlocValidators.required, ], ); final quantityField = TextFieldBloc( validators: [ FieldBlocValidators.required, ], ); final weightField = TextFieldBloc( validators: [ FieldBlocValidators.required, ], ); final exerciseTypeField = TextFieldBloc( validators: [ FieldBlocValidators.required, ], ); ExercisePlanCustomerFormBloc({this.exercisePlanRepository, this.planBloc}) { addFieldBlocs(fieldBlocs: [ quantityField, serieField, weightField ]); String repeatsInitial = exercisePlanRepository.getActualPlanDetail() != null && exercisePlanRepository.getActualPlanDetail().repeats != null ? exercisePlanRepository.getActualPlanDetail().repeats.toString() : "12"; quantityField.updateInitialValue(repeatsInitial); String serieInitial = exercisePlanRepository.getActualPlanDetail() != null && exercisePlanRepository.getActualPlanDetail().serie != null ? exercisePlanRepository.getActualPlanDetail().serie.toString() : "3"; serieField.updateInitialValue(serieInitial); String weightInitial = exercisePlanRepository.getActualPlanDetail() != null && exercisePlanRepository.getActualPlanDetail().weightEquation != null ? exercisePlanRepository.getActualPlanDetail().weightEquation : "30"; weightField.updateInitialValue(weightInitial); quantityField.onValueChanges(onData: (previous, current) async* { exercisePlanRepository.getActualPlanDetail().repeats = current.valueToInt; }); serieField.onValueChanges(onData: (previous, current) async* { exercisePlanRepository.getActualPlanDetail().serie = current.valueToInt; }); weightField.onValueChanges(onData: (previous, current) async* { exercisePlanRepository.getActualPlanDetail().weightEquation = current.value; }); } @override void onSubmitting() async { print("On Submitting Custom Plan form"); try { emitLoading(progress: 30); // Emit either Loaded or Error exercisePlanRepository.getActualPlanDetail().repeats = quantityField.valueToInt; exercisePlanRepository.getActualPlanDetail().serie = serieField.valueToInt; exercisePlanRepository.getActualPlanDetail().weightEquation = weightField.value; if ( exercisePlanRepository.exercisePlanDetails[exercisePlanRepository.getActualPlanDetail()] == null ) { exercisePlanRepository.getActualPlanDetail().change = ExercisePlanDetailChange.add; } else { exercisePlanRepository.getActualPlanDetail().change = ExercisePlanDetailChange.update; } exercisePlanRepository.addDetailToPlan(); planBloc.add(ExercisePlanAddExercise(exercisePlanDetail: exercisePlanRepository.getActualPlanDetail())); emitSuccess(canSubmitAgain: false); } on Exception catch (ex) { emitFailure(failureResponse: ex.toString()); } } //@override Future close() { quantityField.close(); serieField.close(); weightField.close(); exerciseTypeField.close(); return super.close(); } }