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

  try {
    final format = args[0];
    if (format == 'Y-m-d' || format == 'Y/m/d') {
      final dateRegex = RegExp(r'^\d{4}[-/]\d{2}[-/]\d{2}$');
      if (!dateRegex.hasMatch(value)) return false;

      final parts = value.split(RegExp(r'[-/]'));
      final year = int.parse(parts[0]);
      final month = int.parse(parts[1]);
      final day = int.parse(parts[2]);

      final date = DateTime(year, month, day);
      return date.year == year && date.month == month && date.day == day;
    } else {
      DateTime.parse(value);
    }
    return true;
  } catch (e) {
    return false;
  }
}