Skip to main content

Form, TextFormField e TextField | Flutter

  • Form, TextFormField e TextField | Flutter

Se você está criando um Formulário onde precisa de operações como salvar, resetar ou validar — use o TextFormField.
Caso contrário, para uma captura simples de entrada do usuário, o TextField é suficiente.

O TextFormField integra-se ao widget Form.

Ele é um widget de conveniência que envolve um TextField dentro de um FormField.

Não é obrigatório ter um Form como ancestral.
O Form apenas facilita operações como salvar, resetar ou validar vários campos de uma vez.

Para usar sem um Form, basta passar uma GlobalKey para o construtor e usar GlobalKey.currentState para salvar ou resetar o campo de formulário.


Exemplo:

TextFormField(
autovalidateMode: AutovalidateMode.always,
decoration: const InputDecoration(
icon: Icon(Icons.person),
hintText: 'Como as pessoas te chamam?',
labelText: 'Nome *',
),
onSaved: (String? value) {
// Código opcional que será executado
// quando o usuário salvar o formulário.
},
validator: (String? value) {
return value!.contains('@') ? 'Não use o caractere @.' : null;
},
)

O TextField é o campo de texto "puro", sem integração com Form.

  • O TextField chama o callback onChanged sempre que o usuário altera o texto.
  • Se o usuário indicar que terminou de digitar (por exemplo, pressionando o botão de enviar no teclado), o campo chama o callback onSubmitted.

Show! Aqui está a tabelinha comparativa entre TextField e TextFormField:

CaracterísticaTextFieldTextFormField
Integra com Formulário❌ Não integra diretamente.✅ Integra automaticamente com Form.
ValidaçãoManual (onChanged ou onSubmitted).Com suporte fácil via validator().
Salvar DadosManual.Pode usar onSaved() para salvar campos.
Resetar CamposManual (limpar controller).FormState.reset() reseta todos juntos.
Uso IdealEntrada simples de dados.Formulários complexos com validação.
Precisa de Form?❌ Não.❌ Não obrigatório, mas recomendado.

Em resumo:

  • TextField ➔ Para coisas simples e diretas, como uma caixa de pesquisa, login rápido, filtro etc.
  • TextFormField ➔ Quando você tem vários campos e precisa validar, salvar ou resetar tudo junto.