validateNumber method
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";
}
}