import 'package:aitrainer_app/bloc/exercise_plan/exercise_plan_bloc.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.actualPlanDetail != null && exercisePlanRepository.actualPlanDetail.repeats != null ? exercisePlanRepository.actualPlanDetail.repeats.toString() : "12"; quantityField.updateInitialValue(repeatsInitial); String serieInitial = exercisePlanRepository.actualPlanDetail != null && exercisePlanRepository.actualPlanDetail.serie != null ? exercisePlanRepository.actualPlanDetail.serie.toString() : "3"; serieField.updateInitialValue(serieInitial); String weightInitial = exercisePlanRepository.actualPlanDetail != null && exercisePlanRepository.actualPlanDetail.weightEquation != null ? exercisePlanRepository.actualPlanDetail.weightEquation : "30"; weightField.updateInitialValue(weightInitial); quantityField.onValueChanges(onData: (previous, current) async* { exercisePlanRepository.actualPlanDetail.repeats = current.valueToInt; }); serieField.onValueChanges(onData: (previous, current) async* { exercisePlanRepository.actualPlanDetail.serie = current.valueToInt; }); weightField.onValueChanges(onData: (previous, current) async* { exercisePlanRepository.actualPlanDetail.weightEquation = current.value; }); } @override void onSubmitting() async { print("On Submitting Custom Plan form"); try { emitLoading(progress: 30); // Emit either Loaded or Error exercisePlanRepository.actualPlanDetail.repeats = quantityField.valueToInt; exercisePlanRepository.actualPlanDetail.serie = serieField.valueToInt; exercisePlanRepository.actualPlanDetail.weightEquation = weightField.value; exercisePlanRepository.addToPlan(); planBloc.add(ExercisePlanUpdate()); 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(); } }