Quando un'app Flutter "scatta", la causa non è quasi mai il codice Dart in senso generico: è un frame che ha sforato il budget in una delle fasi della pipeline di rendering. Capire come Flutter trasforma un albero di widget in pixel — e come Impeller ha cambiato le regole del gioco rispetto a Skia — è la differenza tra ottimizzare a caso e ottimizzare con il profiler in mano.
In questo tutorial avanzato vedremo:
- le fasi della pipeline (build → layout → paint → compositing → raster) e i thread coinvolti;
- come misurare in modo affidabile con
FrameTiminge DevTools in modalità profile; - come verificare, attivare o disattivare Impeller su Android e iOS;
- come ridurre il costo del raster eliminando i
saveLayerinutili e usando bene iRepaintBoundary; - come gestire gli shader personalizzati (
FragmentProgram) senza introdurre jank; - come trasformare le misure in un benchmark automatico ripetibile in CI.
Prerequisiti: buona dimestichezza con Flutter, widget custom e
CustomPainter, uso di base di DevTools. Tutte le misure vanno fatte in--profilesu dispositivo fisico: in debug i numeri non hanno alcun valore.