isCardNumberValid method

bool isCardNumberValid()

Implementation

bool isCardNumberValid() {
  int size = cardNumber.length;
  //invertimos el numero de tarjeta
  String cardNumberReverse =
      String.fromCharCodes(cardNumber.runes.toList().reversed);
  try {
    int.parse(cardNumber);
  } catch (_) {
    return false;
  }
  // Sin necesidad de aplicar algoritmo
  if (size < 8) {
    return false;
  }

  int sum = 0;
  //recorremos digito por digito
  for (int i = 0; i < size; i++) {
    int digit = int.parse(cardNumberReverse[i]);
    //si la posicion es impar contando desde 0 duplicamos el valor
    if (i % 2 == 1) {
      digit *= 2;
    }

    //si el numero tiene dos digitos le restamos 9 para que vuelva a tener un digito

    sum += digit > 9 ? (digit - 9) : digit;
  }
  return sum % 10 == 0;
}