There are a couple of different methods to do this. TextFormField does not have a height attribute, and the error handling and labels all inter-relate, which make behavior complicated depending on the behavior you prefer.
First, the basic way to do this is to have a parent set the size, and set your TextFormField to expand:
SizedBox( height: 50, child: TextFormField( expands: true, maxLines: null, minLines: null, ), ),
Caveats to this: You can't limit lines on the form to 1. This can be a problem if you want to list a high character count field, and you don't want it to wrap.
In that case, here is a solution to manually set the height using the Text to drive it:
TextFormField( decoration: InputDecoration( labelStyle: TextStyle( fontSize: 16, ), ), style: TextStyle( height: 2.5, textBaseline: TextBaseline.ideographic, overflow: TextOverFlow.ellipsis, fontSize: 12, ), ),
The height is a multiple of the font size. This is still wonky, however it allows you to expand the height without affecting the label of the field (as long as you set a label fontSize, otherwise the label will be the same as the font size you set for the main style).
The label is a key consideration. If you try to set the height of the TextFormField using content padding (a common answer from other users), your label is affected by that padding, which isn't ideal for most cases. This is the padding solution:
TextFormField( decoration: InputDecoration( contentPadding: const EdgeInsets.symmetric(vertical: 30.0), ), )
But this solution would bump your labels down with the contents. It does, however, work, and is a valid solution, just unacceptable in most cases.
SizedBoxproperty for change the width and heightmaxLines: 5