creditCard static method
Validates a credit card number using Luhn algorithm.
Implementation
static String? creditCard(String? value) {
if (value == null || value.isEmpty) return 'Credit card number is required';
final cleaned = value.replaceAll(RegExp(r'[\s\-]'), '');
if (!RegExp(r'^[0-9]{13,19}$').hasMatch(cleaned)) {
return 'Invalid credit card number length';
}
// Luhn algorithm
int sum = 0;
bool alternate = false;
for (int i = cleaned.length - 1; i >= 0; i--) {
int digit = int.parse(cleaned[i]);
if (alternate) {
digit *= 2;
if (digit > 9) digit -= 9;
}
sum += digit;
alternate = !alternate;
}
return (sum % 10 == 0) ? null : 'Invalid credit card number';
}