validate method

  1. @override
Map<String, dynamic>? validate(
  1. AbstractControl control
)
override

Validates the control.

Implementation

@override
Map<String, dynamic>? validate(AbstractControl<dynamic> control) {
  final error = <String, dynamic>{ValidationMessage.creditCard: true};
  // error if value is not a String
  if (control.value != null && control.value is! String) {
    return error;
  }

  final cardNumber = control.value.toString().replaceAll(' ', '');
  final isNumber = NumberValidator.numberRegex.hasMatch(cardNumber);

  return isNumber &&
          cardNumber.length >= 13 &&
          cardNumber.length <= 19 &&
          checkLuhn(cardNumber)
      ? null
      : error;
}