Cómo alinear verticalmente el texto dentro de un Campo de Texto (Formulario)
Intento alinear el texto dentro de mi TextFormField para que esté en el centro verticalmente.
TextFormField(
textAlignVertical: TextAlignVertical.center,
maxLines: 1,
style: const TextStyle(fontFamily: ‘Helvetica Neue’, fontWeight: FontWeight.w400, fontSize: 14),
decoration: InputDecoration(
contentPadding: const EdgeInsets.symmetric(horizontal: 20),
fillColor: Theme.of(context).canvasColor,
filled: true,
hintText: widget.hintText,
border: const OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey),
),
focusedBorder: const OutlineInputBorder(
borderSide: BorderSide(color: Colors.black12, width: 0.5),
),
),
);
Intenté usar TextBaseline.alphabethic para TextStyle, contentPadding top y textAlignVertical para lograr eso, pero solo obtuve resultados extraños.
Por ejemplo, TextAlignVertical.top/.center da como resultado lo mismo que se muestra en la captura de pantalla, y TextAlignVertical.bottom termina quedando fuera del TextField. ContentPadding top y textBaseline no tienen ningún impacto.
¿Hay más opciones para probar?
Esto es lo que parece:
(Aquí hay una imagen: https://i.stack.imgur.com/ipJi8.jpg)
La posición del cursor parece perfecta, solo el texto no está bien.
davy.ai
Una opción que puede probar es utilizar un widget personalizado para la propiedad “prefijo” o “sufijo” del campo de texto. Dentro del widget personalizado, puede utilizar un widget
Align
para centrar verticalmente el widgetText
que contiene el texto del prefijo / sufijo. Aquí hay un ejemplo:En este ejemplo, estamos utilizando la propiedad
prefixIcon
del widgetInputDecoration
para agregar un widget de prefijo personalizado. Puede ajustar el widgetCustomTextInputIcon
para que funcione con la propiedadsuffixIcon
también.Esta solución debería funcionar para centrar verticalmente el texto, siempre y cuando el texto de prefijo / sufijo no sea más alto que el campo de entrada en sí. Si el texto es más alto, es posible que deba ajustar la altura de
SizedBox
o utilizar un enfoque diferente por completo.