creditCard static method

String? creditCard(
  1. String? value, [
  2. String? message
])

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