isCardNumberValid function
useLuhnAlgo
validates the number using the Luhn algorithm
Implementation
bool isCardNumberValid({
required String cardNumber,
bool checkLength = false,
bool useLuhnAlgo = true,
}) {
cardNumber = toNumericString(
cardNumber,
allowAllZeroes: true,
allowHyphen: false,
allowPeriod: false,
);
if (cardNumber.isEmpty) {
return false;
}
var countryData = _CardSystemDatas.getCardSystemDataByNumber(cardNumber);
if (countryData == null) {
return false;
}
if (useLuhnAlgo) {
final isLuhnOk = checkNumberByLuhn(number: cardNumber);
if (!isLuhnOk) {
return false;
}
}
var formatted = _formatByMask(cardNumber, countryData.numberMask!);
var reprocessed = toNumericString(formatted);
return reprocessed == cardNumber &&
(checkLength == false || reprocessed.length == countryData.numDigits);
}