phone static method

FormFieldValidator<String> phone([
  1. String message = 'Invalid phone number'
])

Fails when a non-empty value isn't a plausible phone number (digits, spaces and + - ( ), 7–15 digits).

Implementation

static FormFieldValidator<String> phone([
  String message = 'Invalid phone number',
]) => (value) {
  if (value == null || value.isEmpty) return null;
  final digits = value.replaceAll(RegExp(r'[^0-9]'), '');
  final shape = RegExp(r'^\+?[0-9\s\-()]+$');
  return (shape.hasMatch(value) && digits.length >= 7 && digits.length <= 15)
      ? null
      : message;
};