validateAll method

  1. @override
JarResult validateAll(
  1. List? value, [
  2. Map<String, dynamic>? allValues,
  3. String? path,
  4. Object? root,
])
override

Implementation

@override
JarResult validateAll(List<dynamic>? value,
    [Map<String, dynamic>? allValues, String? path, Object? root]) {
  final issues = <JarIssue>[];
  issues.addAll(
      super.validateAll(value, allValues, path, root ?? value).issues);
  if (value == null) {
    if (issues.isEmpty) return JarResult.success(value);
    return JarResult(
        isValid: false, error: issues.first.message, issues: issues);
  }
  if (value.length != schemas.length) {
    issues.add(JarIssue(
        path: path,
        code: 'invalid_length',
        message: 'Expected ${schemas.length} elements, got ${value.length}'));
  }

  final output = [];
  for (var i = 0; i < schemas.length && i < value.length; i++) {
    final childPath = path == null ? '$i' : '$path.$i';
    final result =
        schemas[i].validateAll(value[i], allValues, childPath, root ?? value);
    output.add(result.value);
    issues.addAll(result.issues);
  }
  if (issues.isEmpty) return JarResult.success(output);
  return JarResult(
      isValid: false,
      error: issues.first.message,
      issues: issues,
      value: output);
}