validatePhone function

String? validatePhone({
  1. required String phone,
  2. String? emptyMessage,
  3. String? invalidFormatMessage,
  4. bool trimWhitespace = true,
  5. List<String>? existingPhones,
  6. String? alreadyExistsMessage,
})

Validates phone number format (10-15 digits, optional +). Returns null if valid, error message if invalid.

Implementation

String? validatePhone({
  required String phone,
  String? emptyMessage,
  String? invalidFormatMessage,
  bool trimWhitespace = true,
  List<String>? existingPhones,
  String? alreadyExistsMessage,
}) {
  final input = trimWhitespace ? phone.trim() : phone;

  if (input.isEmpty) {
    return emptyMessage ?? "Please enter your phone number.";
  }

  if (!PatternType.phone.isValid(input)) {
    return invalidFormatMessage ??
        "The phone number is invalid. Please enter a valid 10–15 digit number.";
  }

  if (existingPhones != null && existingPhones.contains(input)) {
    return alreadyExistsMessage ?? "This phone number is already registered.";
  }

  return null;
}