equalTo method

JarObject equalTo(
  1. String field, [
  2. String? message
])

Implementation

JarObject equalTo(String field, [String? message]) {
  return addValidator((value) {
    if (value == null) return null;
    final otherValue = getFieldValue(field);

    if (otherValue is! Map<String, dynamic>?) return null;
    if (otherValue == null) return null;

    if (!_haveSameKeys(value, otherValue)) {
      return message ?? 'Must be equal to $field';
    }

    for (final key in value.keys) {
      final val1 = value[key];
      final val2 = otherValue[key];

      if (val1 is Map<String, dynamic> && val2 is Map<String, dynamic>) {
        if (!_areObjectsEqual(val1, val2)) {
          return message ?? 'Must be equal to $field';
        }
      } else if (val1 is List && val2 is List) {
        if (!_areListsEqual(val1, val2)) {
          return message ?? 'Must be equal to $field';
        }
      } else if (val1 != val2) {
        return message ?? 'Must be equal to $field';
      }
    }

    return null;
  });
}