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