isCardNumberValid function

bool isCardNumberValid({
  1. required String cardNumber,
  2. bool checkLength = false,
  3. bool useLuhnAlgo = true,
})

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