Search code examples
fluttercapitalizationflutter-textformfield

How to capitialize first letter of TextFormField in flutter


I'm trying to capitialize the first letter of Textformfield, for this I'm using the

textCapitalization: TextCapitalization.words,

but it's not working for Textformfield, and works for textfield

Please help how to do this.


Solution

  • You can try with formatter for upper case, in TextFormField you just use UpperCaseTextFormatter class in input formatters section

    TextFormField(
                controller: _textEditingController,
                inputFormatters: <TextInputFormatter>[
                  UpperCaseTextFormatter()
                ],
              )
    

    Upper text formatter

    class UpperCaseTextFormatter extends TextInputFormatter {
      @override
      TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
        return TextEditingValue(
          text: capitalize(newValue.text),
          selection: newValue.selection,
        );
      }
    }
    String capitalize(String value) {
      if(value.trim().isEmpty) return "";
      return "${value[0].toUpperCase()}${value.substring(1).toLowerCase()}";
    }
    

    output:

    enter image description here