Olá Rafael!
No caso específico que você mencionou, o setState
é usado para informar ao widget de imagem se há uma imagem ou não, e isso implica em atualizar o ícone. No entanto, você está se perguntando por que essa ação de recarregar o método build
não limpa os outros TextFormFields
.
A resposta para essa pergunta está no conceito de estado efêmero e estado do aplicativo. No Flutter, existem dois tipos de estados: o estado efêmero, que é passageiro e não precisa ser compartilhado com muitos widgets, e o estado do aplicativo, que precisa ser compartilhado com vários widgets.
No caso do setState
, ele é usado para atualizar o estado efêmero de um widget específico. Isso significa que apenas o widget em questão será reconstruído quando o setState
for chamado. Os outros widgets não serão afetados, a menos que também dependam desse estado efêmero.
Se você precisa compartilhar o estado entre vários widgets, é necessário usar o estado do aplicativo. Nesse caso, você pode usar um gerenciador de estado, como o Provider
ou o Bloc
, para compartilhar o estado entre os widgets.
Em resumo, o setState
é usado para atualizar o estado efêmero de um widget específico, enquanto o estado do aplicativo é usado para compartilhar o estado entre vários widgets.
Espero ter ajudado e bons estudos!