passes method

  1. @override
FutureOr<bool> passes(
  1. ValidationContext context
)
override

Validates the value using the given context.

Returns true if valid, otherwise false.

Implementation

@override
FutureOr<bool> passes(ValidationContext context) {
  final args = context.parameters;
  final data = context.data;
  final value = context.value;

  if (args.length < 2) return true;

  final otherField = args[0];
  final expectedValue = args[1];

  if (data.containsKey(otherField) &&
      data[otherField].toString() == expectedValue) {
    // Condition met, so it IS required
    if (value == null) return false;
    if (value is String && value.trim().isEmpty) return false;
    if (value is Iterable && value.isEmpty) return false;
    if (value is Map && value.isEmpty) return false;
  }
  return true;
}