validate method

ValidationResult validate(
  1. dynamic data
)

Validates a data object against this schema

Implementation

ValidationResult validate(dynamic data) {
  if (data == null) {
    return ValidationResult.error('The data is null');
  }

  // Convert to a Map if needed
  Map<String, dynamic> dataMap;
  if (data is Map<String, dynamic>) {
    dataMap = data;
  } else if (data is Map) {
    dataMap = Map<String, dynamic>.from(data);
  } else {
    try {
      dataMap = (data as dynamic).toJson() as Map<String, dynamic>;
    } catch (_) {
      return ValidationResult.error(
        'Unable to convert the data to a valid format',
      );
    }
  }

  for (final field in fields) {
    final value = dataMap[field.name];
    final result = field.validate(value);

    if (!result.isValid) {
      return result;
    }
  }

  return ValidationResult.success();
}