Skip to main content
Campo de texto integrado con FormField<String> y un TextField interno. Categoría: Formularios. Uso: Texto, correo, contraseña y entrada multilínea con validación explícita. Importa el barrel público y Flutter Material. Código fuente.

Constructor

Esta firma corresponde al código fuente, incluyendo nulabilidad y defaults; las condiciones y el comportamiento se explican debajo.

Propiedades

“Requerido” significa que debes pasar el argumento, incluso cuando su tipo admite null. Los valores null de color suelen delegar al tema; consulta las notas para el rol efectivo.

Ejemplo

Este archivo define una función que devuelve el widget. Llámala desde build con tus datos/callbacks, y conserva el estado y los recursos en su dueño. No ejecuta callbacks ficticios.

Comportamiento y límites

  • controller y focusNode externos los libera su dueño; el widget crea y libera los recursos internos cuando no se suministran.
  • El error aparece debajo del control y aumenta la altura total. height define sólo la superficie de entrada.
  • obscureText añade un botón de mostrar/ocultar contraseña. Mantén maxLines: 1 para ese caso.
  • Para varias líneas configura minLines, maxLines y height; maxLines: null permite más líneas dentro de la altura disponible.
  • Los cambios del controller llaman setValue y pueden invocar onChanged programáticamente. No garantiza las mismas señales de Form.onChanged/onUserInteraction que TextFormField.
  • No expone enabled, onSaved ni initialValue como parámetros. readOnly impide editar, y AbsorbPointer puede bloquear interacción durante guardar.
  • Si sustituyes un FocusNode externo durante la vida del campo, el código actual no actualiza su nodo interno en didUpdateWidget. Conserva su identidad o recrea el campo.
Para ejemplos con estado y composición completos, consulta componentes reutilizables y formularios.