submit method
Validates and, when clean, runs onSubmit with the current values.
Returns true on success. While onSubmit runs, status is
PrismFormSubmitting; a thrown PrismSubmissionException maps its
PrismSubmissionException.fieldErrors inline and sets a
PrismFormFailure with its message; any other error sets a generic
PrismFormFailure.
Implementation
Future<bool> submit(
Future<void> Function(Map<String, Object?> values) onSubmit,
) async {
if (_status.isSubmitting) return false;
_submitAttempted = true;
if (!validate()) {
_status = const PrismFormEditing();
notifyListeners();
return false;
}
_status = const PrismFormSubmitting();
notifyListeners();
try {
await onSubmit(values);
_status = const PrismFormSuccess();
notifyListeners();
return true;
} on PrismSubmissionException catch (e) {
_errors.addAll(e.fieldErrors);
_status = PrismFormFailure(message: e.message);
notifyListeners();
return false;
} catch (_) {
_status = const PrismFormFailure();
notifyListeners();
return false;
}
}