passes method
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;
}
}