64 lines
1.5 KiB
Dart
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();
|
|
}
|
|
|
|
} |