workouttest_app/lib/bloc/exercise_plan_custom_form.dart
2020-09-16 15:41:39 +02:00

95 lines
3.0 KiB
Dart

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<String, String> {
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<void> close() {
quantityField.close();
serieField.close();
weightField.close();
exerciseTypeField.close();
return super.close();
}
}