creditCard static method
Credit card
Implementation
static String? creditCard(String? value, [String? message]) {
if (value == null || value.isEmpty) return null;
final cleaned = value.replaceAll(RegExp(r'\D'), '');
if (cleaned.length < 13 || cleaned.length > 19) {
return message ?? 'Please enter a valid card number';
}
// 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;
}
if (sum % 10 != 0) {
return message ?? 'Please enter a valid card number';
}
return null;
}