valdiator static method

Future<ExtendedValidatorResult> valdiator({
  1. required String value,
  2. required List<ExtendedValidator>? validators,
})

Will return null if the validators passed are empty or if the validators check out as valid. Otherwise, if a validator does not qualify, will return a ExtendedValidatorResult.

Implementation

static Future<ExtendedValidatorResult> valdiator({
  required String value,
  required List<ExtendedValidator>? validators,
}) async {
  List<ExtendedValidatorResult> result = [];

  if (validators != null && validators.isNotEmpty) {
    // Append the async validator results.
    for (var v in validators.where((element) => element.isAsync)) {
      if (await v.validator(value)) {
        result.add(ExtendedValidatorResult(
            result: true, value: value, message: v.message));
      }
    }
    // Append the sync validator results.
    for (var v in validators.where((element) => !element.isAsync)) {
      if (v.validator(value)) {
        result.add(ExtendedValidatorResult(
            result: true, value: value, message: v.message));
      }
    }
  }
  // Return the last `ExtendedValidatorResult` if the reuslt was invalid.
  // Otherwise return an `ExtendedValidatorResult` with a null result.
  return result.isNotEmpty
      ? result.last
      : ExtendedValidatorResult(result: null, value: value);
}