Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Apagar erro assim que é corrigido

Alguém sabe como fazer pro aviso de erro sumir assim que entram dados novos (não vazios)?

Pergunto isso porque o aviso de erro agora só desaparece quando clica o botão, mas acredito que seria interessante que sumisse assim que dados novos fossem inseridos ( ainda que dados incorretos)

Algo me diz que é na função "on changed" , mas eu não sei como fazer. Caso alguém saiba, por gentileza nos explique

Caso seja um "problema" que será resolvido no curso, desconsiderar e avisar por gentileza

2 respostas
solução!

Olá, Fernando. Tudo bem?

A função onChanged pode sim ser usada para atualizar o estado e validar os campos conforme o usuário insere novos dados. Para fazer com que o aviso de erro desapareça assim que o campo é preenchido, você pode chamar a validação do formulário dentro de setState no onChanged, forçando a revalidação.

Vou deixar um exemplo de como eu fiz para o nameController:

Primeiro declarei uma variável booleana para verificar se o campo foi modificado pelo usuário.

bool _nameTouched = false;

A função setState será chamada normalmente em onChanged, mas a validação só será ativada quando o campo for modificado.

Padding(

 padding: const EdgeInsets.all(8.0),
 child: TextFormField(
   validator: (String? value) {
     if (_nameTouched && (value == null || value.isEmpty)) {
       return 'Insira o nome da tarefa';
     }
     return null;
   },
   onChanged: (text) {
     setState(() {
       _nameTouched = true;  // Marca que o campo foi modificado
       _formKey.currentState!.validate();
     });
   },
   controller: nameController,
   textAlign: TextAlign.center,
   decoration: const InputDecoration(
     border: OutlineInputBorder(),
     hintText: 'Nome',
     fillColor: Colors.white70,
     filled: true,
   ),
 ),
),

Você pode seguir a mesma logica para os outros campos. Vou deixar abaixo um gif demonstrando o meu resuldado.

Tela de um emulador android demonstrando validações de forumulário

Espero ter ajudado. Se tiver outras dúvidas, conte sempre com o fórum!

Siga firme nos estudos!

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Obrigado pela solução.