import 'package:aitrainer_app/repository/exercise_repository.dart'; import 'package:flutter_form_bloc/flutter_form_bloc.dart'; class ExerciseFormBloc extends FormBloc { final ExerciseRepository exerciseRepository; final quantityField = TextFieldBloc( validators: [ FieldBlocValidators.required, ], ); final unitField = TextFieldBloc( validators: [ FieldBlocValidators.required, ], ); final unitQuantityField = TextFieldBloc(); final unitQuantityUnitField = TextFieldBloc(); ExerciseFormBloc({this.exerciseRepository}) { addFieldBlocs(fieldBlocs: [ quantityField, unitField, unitQuantityField, unitQuantityUnitField ]); quantityField.onValueChanges(onData: (previous, current) async* { exerciseRepository.setQuantity(current.valueToDouble); }); unitField.onValueChanges(onData: (previous, current) async* { exerciseRepository.setUnit(current.value); }); unitQuantityField.onValueChanges(onData: (previous, current) async* { exerciseRepository.setUnitQuantity(current.valueToDouble); }); } @override void onSubmitting() async { try { emitLoading(progress: 30); // Emit either Loaded or Error await exerciseRepository.addExercise(); emitSuccess(canSubmitAgain: false); } on Exception catch (ex) { emitFailure(failureResponse: ex.toString()); } } @override Future close() { unitQuantityField.close(); unitQuantityUnitField.close(); return super.close(); } }