isCreditCard function
Returns true if str is a valid credit card number (Luhn check).
Implementation
bool isCreditCard(String str) {
final sanitized = str.replaceAll(RegExp('[^0-9]+'), '');
if (!creditCardReg.hasMatch(sanitized)) return false;
var sum = 0;
var shouldDouble = false;
for (var i = sanitized.length - 1; i >= 0; i--) {
var tmpNum = int.parse(sanitized[i]);
if (shouldDouble) {
tmpNum *= 2;
if (tmpNum >= 10) {
sum += (tmpNum % 10) + 1;
} else {
sum += tmpNum;
}
} else {
sum += tmpNum;
}
shouldDouble = !shouldDouble;
}
return sum % 10 == 0;
}