validatePhoneNumber static method
Implementation
static String? validatePhoneNumber(
String? value, {
String countryCode = 'US',
bool allowInternational = false,
}) {
if (value == null || value.isEmpty) {
return 'Phone number is required.';
}
// Remove common formatting characters
String cleanNumber = value.replaceAll(RegExp(r'[\s\-\(\)]'), '');
if (allowInternational) {
// International phone validation (supports + country code)
final internationalRegExp = RegExp(r'^\+?[1-9]\d{1,14}$');
if (!internationalRegExp.hasMatch(cleanNumber)) {
return 'Invalid international phone number format.';
}
} else {
// Country-specific validation
switch (countryCode.toUpperCase()) {
case 'US':
final usRegExp = RegExp(r'^\d{10}$');
if (!usRegExp.hasMatch(cleanNumber)) {
return 'Invalid US phone number format (10 digits required).';
}
break;
case 'UK':
final ukRegExp = RegExp(r'^\d{10,11}$');
if (!ukRegExp.hasMatch(cleanNumber)) {
return 'Invalid UK phone number format.';
}
break;
default:
final generalRegExp = RegExp(r'^\d{8,15}$');
if (!generalRegExp.hasMatch(cleanNumber)) {
return 'Invalid phone number format.';
}
}
}
return null;
}