Una pantalla de tu app Flutter se siente lenta: el DevTools muestra que se reconstruyen muchos widgets en cada interacción. ¿Cómo diagnosticas y reduces los rebuilds?
Contexto
Un widget grande con un setState en la raíz que reconstruye todo el subárbol, listas construidas de golpe y widgets que podrían ser const pero no lo son. El Performance Overlay muestra jank al desplazar.
Respuesta modelo
El objetivo es acotar qué se reconstruye. 1) Diagnosticar con el Flutter DevTools (Performance, "track widget rebuilds") para ver qué widgets se reconstruyen de más. 2) Bajar el setState lo más cerca posible del widget que realmente cambia, en vez de tenerlo en la raíz; extraer subárboles que no cambian a widgets propios. 3) Marcar como const todos los widgets que no dependen de estado: Flutter los reutiliza y no los reconstruye. 4) Para listas largas, usar ListView.builder (construcción perezosa) en vez de construir todos los hijos de una vez. 5) Considerar una solución de estado (Provider/Riverpod) que notifique solo a los widgets suscritos al dato que cambió, en lugar de un setState amplio. 6) Medir de nuevo para confirmar. El principio: reconstruir poco y localizado, y aprovechar const.
Claves
- Bajar el setState al widget que cambia; extraer subárboles estables.
- const evita reconstruir widgets sin estado.
- ListView.builder construye los hijos de forma perezosa.