submit<T> method
Runs action with current data and updates submit state.
Implementation
Future<T?> submit<T>(
Future<T> Function(Map<String, Object?> data) action, {
void Function(T result)? onSuccess,
void Function(Object error)? onError,
void Function(FormErrors errors)? onValidationError,
bool resetOnSuccess = false,
}) async {
processing = true;
wasSuccessful = false;
recentlySuccessful = false;
clearErrors();
try {
final result = await action(data);
wasSuccessful = true;
recentlySuccessful = true;
if (resetOnSuccess) reset();
onSuccess?.call(result);
return result;
} catch (error) {
final validationErrors = FormErrors.from(error);
if (validationErrors.isNotEmpty) {
errors = validationErrors;
onValidationError?.call(validationErrors);
}
onError?.call(error);
return null;
} finally {
processing = false;
_notifyListeners();
}
}