L'azienda Google ha presentato il framework per la creazione di interfacce utente Flutter 2, che ha segnato la trasformazione del progetto da framework per lo sviluppo di applicazioni mobili a un framework universale per la creazione di qualsiasi tipo di programma, comprese le applicazioni per sistemi desktop e web.
Flutter è considerato un'alternativa a React Native e consente, sulla base di un unico codice sorgente, di lanciare applicazioni per diverse piattaforme, inclusi iOS, Android, Windows, macOS e Linux, oltre a applicazioni da eseguire nei browser. Le applicazioni mobili precedentemente scritte con Flutter 1 dopo la transizione a Flutter 2 possono essere adattate per funzionare su desktop e web senza riscrivere il codice.
La maggior parte del codice Flutter è scritta in Dart, mentre il motore runtime per l'esecuzione delle applicazioni è sviluppato in C++. Nello sviluppo delle applicazioni, oltre al linguaggio Dart nativo di Flutter, è possibile utilizzare l'interfaccia Dart Foreign Function per richiamare codice in C/C++. Le elevate prestazioni di esecuzione sono ottenute grazie alla compilazione delle applicazioni in codice macchina per le piattaforme di destinazione. Non è necessario ricompilare il programma dopo ogni modifica: Dart offre una modalità di hot reload che consente di apportare modifiche all'applicazione in esecuzione e di valutare immediatamente il risultato.
Con Flutter 2 è stata annunciata un'adeguata supporto per la creazione di applicazioni web, adatta per implementazioni aziendali. Vengono menzionati tre principali scenari d'uso di Flutter per il web: sviluppo di applicazioni web autonome (PWA, Progressive Web Apps), creazione di applicazioni web a pagina singola (SPA, Single page apps) e conversione di applicazioni mobili in applicazioni web. Tra le caratteristiche degli strumenti di sviluppo per il web c'è l'uso dei meccanismi di accelerazione del rendering di grafica 2D e 3D, un layout flessibile degli elementi sulla schermata e un motore di rendering CanvasKit compilato in WebAssembly.
Il supporto per le applicazioni desktop è attualmente in fase di beta testing e sarà stabilizzato quest'anno in uno dei prossimi rilasci. Le aziende Canonical, Microsoft e Toyota hanno dichiarato supporto per lo sviluppo con Flutter. Canonical ha scelto Flutter come framework principale per le proprie applicazioni e lo utilizza anche per sviluppare un nuovo installer per Ubuntu. Microsoft ha adattato Flutter per dispositivi pieghevoli con più schermi, come il Surface Duo. Toyota prevede di utilizzare Flutter per i sistemi di infotainment automobilistici. Inoltre, un'interfaccia utente personalizzata basata su Flutter è in fase di sviluppo nel sistema operativo microkernel Fuchsia di Google.

È stato contemporaneamente pubblicato il rilascio del linguaggio di programmazione Dart 2.12, che continua lo sviluppo della versione radicalmente riprogettata di Dart 2. Dart 2 si differenzia dalla versione originale del linguaggio Dart per l'applicazione di una forte tipizzazione statica (i tipi possono essere dedotti automaticamente, quindi l'indicazione dei tipi non è obbligatoria, ma la tipizzazione dinamica non è più utilizzata e il tipo calcolato inizialmente è fissato alla variabile e viene successivamente applicato un rigoroso controllo del tipo).
Il rilascio è significativo per la stabilizzazione della modalità di utilizzo sicuro del valore «Null» (null safety), che permette di evitare crash causati da tentativi di utilizzo di variabili il cui valore non è definito e impostato su «Null». La modalità implica che le variabili non possono avere valori indefiniti, a meno che non venga esplicitamente assegnato il valore null. In questa modalità si considerano rigorosamente i tipi delle variabili, il che consente al compilatore di applicare ulteriori ottimizzazioni. La conformità dei tipi viene verificata in fase di compilazione; ad esempio, nel caso di un tentativo di assegnare il valore «Null» a una variabile di un tipo che non prevede uno stato indefinito, come «int», verrà generato un errore.
Un altro importante miglioramento di Dart 2.12 è stata la realizzazione stabile della libreria FFI, che consente di creare codice ad alte prestazioni, dal quale è possibile accedere alle API in linguaggio C. Sono state apportate ottimizzazioni per le prestazioni e le dimensioni. Sono stati aggiunti strumenti per gli sviluppatori e un sistema di profilazione del codice, scritti utilizzando Flutter, insieme a nuovi plugin per lo sviluppo di applicazioni su Dart e Flutter per Android Studio/IntelliJ e VS Code.

Fonte: opennet.ru
