validate method

  1. @override
List<ValidationFailure> validate(
  1. ValidationContext<T> context
)
override

Validates this rule synchronously.

Implementation

@override
List<ValidationFailure> validate(ValidationContext<T> context) {
  final instance = context.instanceToValidate;
  final collection = propertyFunc(instance);

  if (collection == null) return [];

  final failures = <ValidationFailure>[];

  // Validate collection-level validators
  failures.addAll(super.validate(context));

  // Validate each item if validator is set
  if (_itemValidator != null) {
    for (var i = 0; i < collection.length; i++) {
      final item = collection[i];
      final result = _itemValidator!.validate(item);

      for (final failure in result.errors) {
        failures.add(
          ValidationFailure(
            propertyName: '$propertyName[$i].${failure.propertyName}',
            errorMessage: failure.errorMessage,
            attemptedValue: failure.attemptedValue,
          ),
        );
      }
    }
  }

  return failures;
}