101 lines
2.9 KiB
Dart
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();
|
|
}
|
|
|
|
} |