先看问题,如图
image.png
我的代码,用一个高度为40Container包裹TextField
Container(
height: 40,
color: Colors.green,
child: textFieldHeight(),
),
可以看到文字是往下靠的。
为什么会出现这个问题?我们先来看看TextField的默认高度是多少
image.png
如上图,目测高度为45左右,那么问题显而易见了
TextField的高度超出外层Container,导致文本无法居中对齐。
解决办法
1.设置外层Container的高度和TextField的默认高度一样,即Container设置为45
image.png
2.不修改Container的高度,而是给Container设置padding(如果padding比较大,TextField会无法显示全)
image.png
3.第三种,给TextField 里面的 decoration 对应的 InputDecoration 设置透明的 boder和contentPadding
contentPadding: EdgeInsets.only(left:10),
border: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.transparent,
),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.transparent,
),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.transparent,
),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.transparent,
),
),
4.第四种,设置isCollapsed: true(推荐)
image.png
这个时候TextField就没有默认高度了,而是跟随文本的高度,
image.png
这时候还没有垂直对齐,给Container设置alignment: Alignment.center,就完全居中了
image.png
image.png