workouttest_app/lib/bloc/exercise_form_bloc.dart
2020-08-17 12:38:47 +02:00

64 lines
1.5 KiB
Dart

import 'package:aitrainer_app/repository/exercise_repository.dart';
import 'package:flutter_form_bloc/flutter_form_bloc.dart';
class ExerciseFormBloc extends FormBloc<String, String> {
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<void> close() {
unitQuantityField.close();
unitQuantityUnitField.close();
return super.close();
}
}