submit method

Future<bool> submit(
  1. Future<void> onSubmit(
    1. Map<String, Object?> values
    )
)

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;
  }
}