submit<T> method
Future<void>
submit<
T>([ - T? pModel
])
Implementation
Future<void> submit<T>([T? pModel]) async {
final model = pModel ??
(state is AbstractFormBasicState
? (state as AbstractFormBasicState).model
: null);
if (state is AbstractFormState &&
!((state as AbstractFormState).modelValidator?.validate(model) ??
true)) {
(state as AbstractFormState).autovalidate = true;
updateStatus(FormResultStatus.validationError);
await Future.delayed(const Duration(milliseconds: 100));
updateStatus(FormResultStatus.initialized);
} else {
state.formResultStatus = FormResultStatus.submitting;
updateState(state.copyWith());
final result =
model != null ? await onSubmit(model) : await onSubmitEmpty();
if (result.isSuccess) {
await onSubmitSuccess(result);
success();
} else {
if (result.isConnectionError) {
try {
final localResult = model != null
? await onSubmitLocal(model)
: await onSubmitEmptyLocal();
if (localResult.isLocalSuccess) {
await onSubmitLocalSuccess(result);
} else {
await onSubmitLocalError(result);
}
} catch (e) {
model != null
? await onConnectionSubmitError(result, model)
: await onConnectionSubmitEmptyError(result);
}
} else {
await onSubmitError(result);
}
}
}
}