diegoRodicio

Está documentación está a túa disposición sin ningún custo económico. Sen embargo, para a súa elaboración dedico moito tempo e recursos, polo que agradecería unha colaboración co que consideres oportuno. Gracias.

View Categories

⚡ Widgets Con Estado (StatefulWidget)

Os StatefulWidget son aqueles widgets que poden cambiar co tempo, é dicir, teñen estado mutable. Son ideais para situacións nas que a interface debe actualizarse tras unha acción do usuario ou un evento.

❓ Cando usar StatefulWidget #

Usamos StatefulWidget cando:

  • A interface precisa cambiar despois de certa acción (por exemplo, ao premer un botón).
  • Hai datos que cambian dinamicamente (como o contador dun cronómetro ou o contido dun formulario).
  • A pantalla precisa gardar estado entre actualizacións (como o scroll nunha lista).

📌 Exemplos típicos:

  • Contadores.
  • Formularios que se validan mentres se escriben.
  • Elementos interactivos como Checkbox, Slider, Switch, etc.
  • Un campo de texto (TextField) onde o usuario introduce información.
  • Un reprodutor de vídeo que mostra o tempo transcorrido.

🧬 Estrutura e ciclo de vida (initState, build, dispose) #

A diferenza dos StatelessWidget que son unha única clase, un StatefulWidget componse de dúas clases:

  1. A clase principal, que estende de StatefulWidget. É inmutable.
  2. A clase State:. Aquí é onde se gardan os datos que cambian e se constrúe a interface.

🔄 Métodos principais do ciclo de vida #

MétodoCando se chamaPara que serve
initState()Só unha vez, ao crear o widgetInicializar variables, abrir recursos, comezar animacións
build()Sempre que se crea ou se chama setState()Construír a interface visual do widget
dispose()Ao destruír o widgetLiberar recursos, pechar conexións ou controladores

Ciclo de vida importante: #

initState() #

  • Chamado unha vez ao comezar.
  • Non é obrigatorio
  • Úsase para inicializacións, como cargar datos ou realizar configuracións que só necesitan facerse unha vez.
  • Chámase unha única vez cando o obxecto State se crea e se insire na árbore de widgets.
  • Sempre debes chamar a super.initState() ao principio.

build(BuildContext context) #

  • Este método é obrigatorio e chámase cada vez que o widget necesita ser debuxado ou reconstruído (por exemplo, tras un setState()).
  • Aquí definimos que widgets se deben mostrar.

dispose() #

  • Chamado cando o widget se elimina da árbore.
  • Non é obrigatorio
  • Úsase para liberar recursos, como cancelación de listeners ou controladores.
  • Sempre debes chamar a super.dispose() ao final

🔗 Ver o código en DartPad

✍️ O método setState() #

Cando o estado interno do teu widget cambia e queres que eses cambios se reflictan na pantalla, debes chamar a setState().

Chamando a setState(), dígolle a Flutter que algo cambiou e debe reconstruír a interface.

setState(() {
  // Actualizamos o valor dun atributo do estado
  _contador++;
});

🧪 Exemplo práctico (Contador simple) #

🔗 Ver o código en DartPad

🧪 Outro contador #

🔗 Ver o código en DartPad

⚡ Xeración de Código Automático (Snippets) #

Lembra que en Visual Studio Code dispomos do atallo (snippet) stful, de xeito que ao escribilo o editor automaticamente crea un StatefulWidget completo coa súa clase State asociada.

📚 Onde atopar máis información #