submitForm method

Future<SubmissionResult> submitForm()

Implementation

Future<SubmissionResult> submitForm() async {
  final formState = Data.maybeOf<FormState>(this);
  assert(formState != null, 'Form not found');
  final formController = Data.maybeOf<FormController>(this);
  assert(formController != null, 'Form not found');
  final values = <FormKey, dynamic>{};
  final errors = <FormKey, ValidationResult>{};
  for (var entry in formController!._attachedInputs.entries) {
    var key = entry.key;
    var value = entry.value;
    values[key] = value.value;
  }
  formController.revalidate(this, FormValidationMode.submitted);
  for (var entry in formController._validity.entries) {
    var key = entry.key;
    var value = await entry.value;
    if (value != null) {
      errors[key] = value;
    }
  }
  if (errors.isNotEmpty) {
    return SubmissionResult(values, errors);
  }
  formState?.widget.onSubmit?.call(this, values);
  return SubmissionResult(values, errors);
}