validate method

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

Implementation

@override
JarResult validate(List<dynamic>? value,
    [Map<String, dynamic>? allValues, String? path, Object? root]) {
  final base = super.validate(value, allValues, path, root ?? value);
  if (!base.isValid) return base;
  if (value == null) return JarResult.success(value);
  if (value.length != schemas.length) {
    return JarResult.error(
        'Expected ${schemas.length} elements, got ${value.length}');
  }

  final errors = [];
  final output = [];
  for (var i = 0; i < schemas.length; i++) {
    final childPath = path == null ? '$i' : '$path.$i';
    final result =
        schemas[i].validate(value[i], allValues, childPath, root ?? value);
    output.add(result.value);
    if (!result.isValid) {
      errors.add({'path': childPath, 'message': result.error});
    }
  }
  if (errors.isNotEmpty) {
    return JarResult.error('Validation failed', {'errors': errors});
  }
  return JarResult.success(output);
}