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) async {
  final args = context.parameters;
  final value = context.value;
  final pattern = _pattern ?? (args.isNotEmpty ? args.join(',') : null);
  if (pattern == null) return true;
  if (value is! String) return false;

  try {
    return await Isolate.run(() {
      final regex = RegExp(pattern);
      return regex.hasMatch(value);
    }).timeout(const Duration(milliseconds: 150));
  } on TimeoutException {
    return false;
  } catch (_) {
    return false;
  }
}