creditCard static method
Validates credit card number (Luhn algorithm)
Example:
Validators.creditCard('4111111111111111');
Implementation
static String? creditCard(String? value, {String? message}) {
if (value == null || value.isEmpty) return null;
final digits = value.replaceAll(RegExp(r'\D'), '');
if (digits.length < 13 || digits.length > 19) {
return message ?? 'Invalid credit card number';
}
// Luhn algorithm
int sum = 0;
bool alternate = false;
for (int i = digits.length - 1; i >= 0; i--) {
int n = int.parse(digits[i]);
if (alternate) {
n *= 2;
if (n > 9) {
n = (n % 10) + 1;
}
}
sum += n;
alternate = !alternate;
}
if (sum % 10 != 0) {
return message ?? 'Invalid credit card number';
}
return null;
}