Flutter 1.0: toolkit UI cross-platform di Google

Google rilascia Flutter 1.0 con widget Dart compilati in codice ARM nativo, motore di rendering Skia, hot reload e un approccio che ridisegna ogni pixel senza componenti nativi.

Open SourceWeb Open SourceFlutterDartMobileUICross-PlatformGoogle

Un approccio diverso al cross-platform

Lo sviluppo mobile cross-platform nel 2018 si divide tra due scuole: i framework che usano WebView (Cordova, Ionic) — essenzialmente applicazioni web impacchettate — e quelli che mappano componenti JavaScript su widget nativi del sistema operativo, come React Native. Il primo approccio sacrifica le performance, il secondo deve gestire le differenze tra i componenti nativi di iOS e Android, con risultati a volte imprevedibili.

Flutter 1.0, rilasciato da Google, sceglie una terza via: non usa componenti nativi del sistema operativo e non esegue codice in una WebView. Flutter disegna direttamente ogni pixel sullo schermo usando il proprio motore di rendering, Skia. L’interfaccia è identica su ogni piattaforma non perché si adatta ai componenti nativi, ma perché non li usa affatto.

Dart e compilazione nativa

Flutter usa Dart, un linguaggio sviluppato da Google, che compila in codice ARM nativo. La scelta di Dart — linguaggio poco diffuso rispetto a JavaScript — è motivata da ragioni tecniche: Dart supporta sia la compilazione AOT (Ahead-of-Time) per le performance in produzione sia la compilazione JIT (Just-in-Time) durante lo sviluppo, abilitando l’hot reload — la possibilità di vedere le modifiche al codice riflesse nell’applicazione in esecuzione in meno di un secondo, senza perdere lo stato.

La compilazione nativa elimina il bridge tra JavaScript e codice nativo che in React Native può diventare un collo di bottiglia per animazioni e interazioni complesse.

Widget e composizione

L’unità fondamentale di Flutter è il widget: un oggetto immutabile che descrive una porzione dell’interfaccia. Ogni elemento visibile — bottoni, testo, padding, layout, animazioni — è un widget. I widget si compongono per nesting: un Center contiene un Column che contiene un Text e un RaisedButton. L’intero albero dell’interfaccia è dichiarativo: lo sviluppatore descrive come l’UI deve apparire per un dato stato, e Flutter calcola le differenze e aggiorna solo i widget modificati.

Flutter include due librerie di widget predefiniti: Material Design per l’estetica Android e Cupertino per quella iOS, ma entrambe sono implementazioni proprie, non wrapper di componenti nativi.

Performance prevedibili

Il motore Skia renderizza a 60 fps (o 120 fps su dispositivi compatibili) con un thread UI e un thread di rendering separati. Le performance sono più prevedibili rispetto ai framework basati su bridge, perché non c’è serializzazione tra linguaggi diversi. Flutter è rilasciato sotto licenza BSD.

Link: flutter.dev

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi