validate method

  1. @override
String? validate(
  1. String? value
)
override

Validates the value and returns an error string if it fails, or null if it passes.

Implementation

@override
String? validate(String? value) {
  if (value == null || value.isEmpty) return null;
  final sanitized = value.replaceAll(RegExp(r'[\s\-]'), '');
  if (!RegExp(r'^\d+$').hasMatch(sanitized)) return message;

  int sum = 0;
  bool alternate = false;
  for (int i = sanitized.length - 1; i >= 0; i--) {
    int n = int.parse(sanitized[i]);
    if (alternate) {
      n *= 2;
      if (n > 9) n -= 9;
    }
    sum += n;
    alternate = !alternate;
  }
  if (sum % 10 != 0) return message;
  return null;
}