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 value = context.value;
  final args = context.parameters;
  final data = context.data;
  if (value == null) return false;
  if (value is! String) return false;

  try {
    final valueDate = DateTime.parse(value);
    DateTime compareDate;
    final arg = args.isNotEmpty ? args[0] : null;

    if (arg == 'today') {
      compareDate = DateTime.now();
    } else if (arg == 'tomorrow') {
      compareDate = DateTime.now().add(const Duration(days: 1));
    } else if (arg == 'yesterday') {
      compareDate = DateTime.now().subtract(const Duration(days: 1));
    } else if (arg != null && data.containsKey(arg)) {
      final otherValue = data[arg];
      if (otherValue is String) {
        compareDate = DateTime.parse(otherValue);
      } else {
        return false;
      }
    } else if (arg != null) {
      compareDate = DateTime.parse(arg);
    } else {
      return false;
    }

    return valueDate.isBefore(compareDate);
  } catch (e) {
    return false;
  }
}