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

101 lines
2.9 KiB
Dart

import 'package:aitrainer_app/repository/customer_repository.dart';
import 'package:flutter_form_bloc/flutter_form_bloc.dart';
class CustomerChangeFormBloc extends FormBloc<String, String> {
final CustomerRepository customerRepository;
final emailField = TextFieldBloc(
validators: [
FieldBlocValidators.required,
],
);
final firstNameField = TextFieldBloc(
validators: [
FieldBlocValidators.required,
],
);
final nameField = TextFieldBloc();
final passwordField = TextFieldBloc(
validators: [
//FieldBlocValidators.confirmPassword(passwordField),
],
);
final birthYearField = TextFieldBloc();
final weightField = TextFieldBloc();
final genderField = SelectFieldBloc();
final goalField = TextFieldBloc();
CustomerChangeFormBloc({this.customerRepository}) {
addFieldBlocs(fieldBlocs: [
emailField,
firstNameField,
nameField,
passwordField,
birthYearField,
weightField,
genderField,
goalField,
]);
emailField.updateInitialValue(customerRepository.customer.email);
firstNameField.updateInitialValue(customerRepository.customer.firstname);
nameField.updateInitialValue(customerRepository.customer.name);
birthYearField.updateInitialValue(customerRepository.customer.birthYear.toString());
weightField.updateInitialValue(customerRepository.customer.weight.toString());
genderField.updateInitialValue(customerRepository.getGenderByDBValue(customerRepository.sex));
firstNameField.onValueChanges(onData: (previous, current) async* {
customerRepository.setFirstName(current.value);
});
nameField.onValueChanges(onData: (previous, current) async* {
customerRepository.setName(current.value);
});
birthYearField.onValueChanges(onData: (previous, current) async* {
customerRepository.setBirthYear(current.valueToInt);
});
weightField.onValueChanges(onData: (previous, current) async* {
customerRepository.setWeight(current.valueToInt);
});
customerRepository.genders.forEach((element) {
genderField.addItem(element.name);
});
genderField.onValueChanges(onData: (previous, current) async* {
String dbValue = customerRepository.getGenderByName(current.value);
customerRepository.setSex(dbValue);
});
}
@override
void onSubmitting() async {
print("on Submitting Custom form");
try {
emitLoading(progress: 30);
// Emit either Loaded or Error
await customerRepository.saveCustomer();
emitSuccess(canSubmitAgain: false);
} on Exception catch (ex) {
emitFailure(failureResponse: ex.toString());
}
}
@override
Future<void> close() {
emailField.close();
firstNameField.close();
nameField.close();
passwordField.close();
birthYearField.close();
weightField.close();
genderField.close();
return super.close();
}
}