validate method
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();
}