validate method

  1. @override
JarResult validate(
  1. dynamic value, [
  2. Map<String, dynamic>? allValues
])
override

Implementation

@override
JarResult validate(dynamic value, [Map<String, dynamic>? allValues]) {
  if (value == null) {
    return super.validate(null, allValues);
  }

  if (value is! List) {
    return JarResult.error('Expected a list');
  }

  List<T>? typedList;
  try {
    typedList = List<T>.from(value);
  } catch (e) {
    return JarResult.error('Failed to convert list to required type');
  }

  final listResult = super.validate(typedList, allValues);
  if (!listResult.isValid) {
    return listResult;
  }

  if (typedList.isNotEmpty && elementSchema != null) {
    final errors = <int, String>{};
    for (var i = 0; i < typedList.length; i++) {
      final elementResult = elementSchema!.validate(typedList[i], allValues);
      if (!elementResult.isValid) {
        errors[i] = elementResult.error!;
      }
    }
    if (errors.isNotEmpty) {
      return JarResult.error(
          'Errors in list elements', {'elementErrors': errors});
    }
  }

  return JarResult.success();
}