validateNumber method

String? validateNumber(
  1. String number
)

Match the string entered by user against RegExp rules for each card type.

TODO: localize the messages.

Implementation

String? validateNumber(String number) {
  // Remove the white spaces inserted by formatters
  final cleanNumber = number.replaceAll(' ', '');

  switch (this) {
    case BrandType.visa:
      if (_visaRegExp.hasMatch(cleanNumber)) {
        return null;
      } else if (cleanNumber.isEmpty) {
        return "Required";
      } else {
        return "Inavlid VISA number";
      }
    case BrandType.master:
      if (_mastercardRegExp.hasMatch(cleanNumber)) {
        return null;
      } else if (cleanNumber.isEmpty) {
        return "Required";
      } else {
        return "Inavlid MASTER CARD number";
      }
    case BrandType.mada:
      if (_madaRegExpV.hasMatch(cleanNumber) ||
          _madaRegExpM.hasMatch(cleanNumber)) {
        return null;
      } else if (cleanNumber.isEmpty) {
        return "Required";
      } else {
        return "Inavlid MADA number";
      }
    default:
      return "No brand provided";
  }
}