validate method

  1. @override
void validate(
  1. String? path,
  2. Schema schema,
  3. dynamic value,
  4. List<ValidationResult> results,
)
override

Validates a given value against this rule.

  • path a dot notation path to the value.
  • schema a schema this rule is called from
  • value a value to be validated.
  • results a list with validation results to add new results.

Implementation

@override
void validate(String? path, Schema schema, dynamic value,
    List<ValidationResult> results) {
  var name = path ?? 'value';
  var found = <String>[];

  for (var i = 0; i < _properties.length; i++) {
    var property = _properties[i];

    var propertyValue = ObjectReader.getProperty(value, property);

    if (propertyValue != null) found.add(property);
  }

  if (found.isEmpty) {
    results.add(ValidationResult(
        path,
        ValidationResultType.Error,
        'VALUE_NULL',
        name +
            ' must have at least one property from ' +
            _properties.join(','),
        _properties,
        null));
  } else if (found.length > 1) {
    results.add(ValidationResult(
        path,
        ValidationResultType.Error,
        'VALUE_ONLY_ONE',
        name + ' must have only one property from ' + _properties.join(','),
        _properties,
        null));
  }
}