validate method

  1. @override
ValidationResult validate(
  1. T? value, {
  2. bool stopOnFirstError = false,
})

Implementation

@override
ValidationResult validate(T? value, {bool stopOnFirstError = false}) {
  if (value == null) {
    return ValidationResult.failure(['Value must not be null.']);
  }

  List<String>? collectedErrors;

  for (final validator in validators) {
    final (valid, error) = validator(value, context);

    if (!valid && error != null) {
      if (stopOnFirstError) {
        return ValidationResult.failure([error]);
      }
      collectedErrors ??= [];
      collectedErrors.add(error);
    }
  }

  if (collectedErrors == null) {
    return ValidationResult.success();
  }

  final errors = List.generate(
    collectedErrors.length,
    (i) => collectedErrors![i],
    growable: false,
  );

  return ValidationResult.failure(errors);
}