formValidateUI method

Future<FormResult> formValidateUI(
  1. Map<String, Object?> data
)

Validates form data against the table's field definitions.

This method performs comprehensive validation of input data based on the validators defined for each table field. It creates a form validator instance and processes all field validations.

Parameters:

  • data - A map of field names to values that need to be validated

Returns a FormResult containing both the validation results and the processed form data.

Example:

var formResult = await table.formValidateUI({
  'name': 'John Doe',
  'email': 'john@example.com',
  'age': '25',
});

if (formResult.result.success) {
  // Process valid form data
  print('Form is valid');
} else {
  // Handle validation errors
  print('Validation errors: ${formResult.result.errors}');
}

Implementation

Future<FormResult> formValidateUI(
  Map<String, Object?> data,
) async {
  Map<String, List<Future<FieldValidateResult> Function(dynamic)>> fields =
      {};

  var exteraData = <String, Object?>{};
  for (final field in this.fields) {
    fields[field.name] = field.validators.map((validator) {
      return (value) async {
        var result = await validator(value);
        return FieldValidateResult(
          error: result,
          success: result.isEmpty,
        );
      };
    }).toList();
    exteraData[field.name] = data[field.name];
  }

  FormValidator formValidator = FormValidator(
    fields: fields,
    name: '${name}_form',
    extraData: exteraData,
  );
  var res = await formValidator.validateAndForm();

  return FormResult(
    form: res.form,
    result: res.result,
  );
}