isValidLuhnNumber function
Checks the input string to see whether or not it is a valid Luhn number.
@param cardNumber a String that may or may not represent a valid Luhn number @return {@code true} if and only if the input value is a valid Luhn number
Implementation
bool isValidLuhnNumber(String? cardNumber) {
if (cardNumber == null) {
return false;
}
bool isOdd = true;
int sum = 0;
for (int index = cardNumber.length - 1; index >= 0; index--) {
var c = cardNumber[index];
if (!isDigit(c)) {
return false;
}
int? digitInteger = getNumericValue(c);
isOdd = !isOdd;
if (digitInteger !=null && isOdd) {
digitInteger *= 2;
}
if (digitInteger !=null && digitInteger > 9) {
digitInteger -= 9;
}
if(digitInteger !=null ) {
sum += digitInteger;
}
}
return sum % 10 == 0;
}