maxLength property

int? maxLength

The maximum number of characters (Unicode grapheme clusters) to allow in the text field.

After maxLength characters have been input, additional input is ignored, unless maxLengthEnforcement is set to MaxLengthEnforcement.none.

The TextField enforces the length with a LengthLimitingTextInputFormatter, which is evaluated after the supplied inputFormatters, if any.

This value must be either null or greater than zero. If set to null (the default), there is no limit to the number of characters allowed.

Whitespace characters (e.g. newline, space, tab) are included in the character count.


For a specific definition of what is considered a character, see the characters package on Pub, which is what Flutter uses to delineate characters. In general, even complex characters like surrogate pairs and extended grapheme clusters are correctly interpreted by Flutter as each being a single user-perceived character.

For instance, the character "ö" can be represented as '\u{006F}\u{0308}', which is the letter "o" followed by a composed diaeresis "¨", or it can be represented as '\u{00F6}', which is the Unicode scalar value "LATIN SMALL LETTER O WITH DIAERESIS". It will be counted as a single character in both cases.

Similarly, some emoji are represented by multiple scalar values. The Unicode "THUMBS UP SIGN + MEDIUM SKIN TONE MODIFIER", "👍🏽"is counted as a single character, even though it is a combination of two Unicode scalar values, '\u{1F44D}\u{1F3FD}'.


final int? maxLength;