Как по вертикали центрировать текст разного размера в текстовом поле Flutter?
У меня есть TextField, как этот, где входной текст и текст подсказки имеют разные размеры.
new TextField(
style: Theme.of(context).textTheme.subhead.copyWith(
fontSize: 70.0,
),
decoration: new InputDecoration(
hintText: 'Enter a number',
hideDivider: true,
hintStyle: new TextStyle(
color: Colors.grey[500],
fontSize: 25.0,
),
),
);
В то время как текст пользовательского ввода центрируется в моем родительском контейнере, hintText - нет (верхняя часть имеет больше места, чем нижняя). Есть ли способ вертикального центрирования текста подсказки? Причина, по которой текст подсказки не совпадает с размером входного текста, заключается в том, что он занимает больше места, чем зеленый контейнер, поэтому выглядит так Enter a nu...
, что не очень удобно для пользователя. (Так альтернативно, есть ли способ получить новую строку в hintText?)
4 ответа
Я вижу, что этому больше 2 лет, но если другие столкнутся с этой проблемой:
InputDecoration имеет свойство contentPadding.
TextField(
decoration: InputDecoration(
hintText: 'Hint Text',
contentPadding: EdgeInsets.all(10.0),
),
);
Добавлять
textAlignVertical: TextAlignVertical.center,
в вашем TextField.
TextField(
textAlignVertical: TextAlignVertical.center,
...
),
new TextField(
decoration: new InputDecoration(
hintText: 'your hint',
),
textAlign: TextAlign.center,
)
textAlign: TextAlign.center
заставит вашу подсказку появиться в центре.
Ниже приведено решение вашей проблемы:
Container(
color: Colors.red,
width: 1000,
height: 500,
alignment: Alignment.center,
child: TextFormField(
keyboardType: TextInputType.emailAddress,
autofocus: false,
style: new TextStyle(fontSize: 20),
decoration: InputDecoration(
hintText: 'Email', hintStyle: TextStyle(color: Color(0xff777777))),
),
)