indianPhoneNumberFormatter static method

List<TextInputFormatter> indianPhoneNumberFormatter()

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),
      );
    }),
  ];
}