100 lines
3.5 KiB
Dart
100 lines
3.5 KiB
Dart
import 'package:aitrainer_app/bloc/exercise_plan/exercise_plan_bloc.dart';
|
|
import 'package:aitrainer_app/model/exercise_plan_detail.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.getActualPlanDetail() != null &&
|
|
exercisePlanRepository.getActualPlanDetail().repeats != null ?
|
|
exercisePlanRepository.getActualPlanDetail().repeats.toString() : "12";
|
|
quantityField.updateInitialValue(repeatsInitial);
|
|
|
|
String serieInitial = exercisePlanRepository.getActualPlanDetail() != null &&
|
|
exercisePlanRepository.getActualPlanDetail().serie != null ?
|
|
exercisePlanRepository.getActualPlanDetail().serie.toString() : "3";
|
|
serieField.updateInitialValue(serieInitial);
|
|
|
|
String weightInitial = exercisePlanRepository.getActualPlanDetail() != null &&
|
|
exercisePlanRepository.getActualPlanDetail().weightEquation != null ?
|
|
exercisePlanRepository.getActualPlanDetail().weightEquation : "30";
|
|
weightField.updateInitialValue(weightInitial);
|
|
|
|
quantityField.onValueChanges(onData: (previous, current) async* {
|
|
exercisePlanRepository.getActualPlanDetail().repeats = current.valueToInt;
|
|
});
|
|
serieField.onValueChanges(onData: (previous, current) async* {
|
|
exercisePlanRepository.getActualPlanDetail().serie = current.valueToInt;
|
|
});
|
|
weightField.onValueChanges(onData: (previous, current) async* {
|
|
exercisePlanRepository.getActualPlanDetail().weightEquation = current.value;
|
|
});
|
|
}
|
|
|
|
@override
|
|
void onSubmitting() async {
|
|
print("On Submitting Custom Plan form");
|
|
try {
|
|
emitLoading(progress: 30);
|
|
// Emit either Loaded or Error
|
|
|
|
exercisePlanRepository.getActualPlanDetail().repeats = quantityField.valueToInt;
|
|
exercisePlanRepository.getActualPlanDetail().serie = serieField.valueToInt;
|
|
exercisePlanRepository.getActualPlanDetail().weightEquation = weightField.value;
|
|
if ( exercisePlanRepository.exercisePlanDetails[exercisePlanRepository.getActualPlanDetail()] == null ) {
|
|
exercisePlanRepository.getActualPlanDetail().change = ExercisePlanDetailChange.add;
|
|
} else {
|
|
exercisePlanRepository.getActualPlanDetail().change = ExercisePlanDetailChange.update;
|
|
}
|
|
exercisePlanRepository.addDetailToPlan();
|
|
planBloc.add(ExercisePlanAddExercise(exercisePlanDetail: exercisePlanRepository.getActualPlanDetail()));
|
|
|
|
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();
|
|
}
|
|
}
|