indianPhoneNumberFormatter static method
indianPhoneNumberFormatter formats input as an Indian phone number (e.g., +91 XXXXX-XXXXX).
Implementation
static List<TextInputFormatter> indianPhoneNumberFormatter() {
return [
TextInputFormatter.withFunction((oldValue, newValue) {
String newText = newValue.text.replaceAll(RegExp(r'\D'), '');
if (newText.startsWith('91')) {
newText = newText.substring(2);
}
if (newText.length > 10) {
newText = newText.substring(0, 10);
}
final StringBuffer buffer = StringBuffer();
buffer.write('+91 ');
for (int i = 0; i < newText.length; i++) {
buffer.write(newText[i]);
if (i == 4 && newText.length > 5) {
buffer.write(
'-'); // Add hyphen after first 5 digits if more digits exist
}
}
final String formattedText = buffer.toString();
return TextEditingValue(
text: formattedText,
selection: TextSelection.collapsed(offset: formattedText.length),
);
}),
];
}