isValidLuhnNumber function

bool isValidLuhnNumber(
  1. String? cardNumber
)

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;
}