Google ha presentato il framework per la creazione di interfacce utente Flutter 2, che segna la trasformazione del progetto da framework per lo sviluppo di applicazioni mobili a un framework universale per la creazione di qualsiasi tipo di programma, inclusi quelli per sistemi desktop e applicazioni web.
Flutter è considerato un'alternativa a React Native e consente, a partire da una singola base di codice, di rilasciare applicazioni per diverse piattaforme, inclusi iOS, Android, Windows, macOS e Linux, oltre ad applicazioni da eseguire nei browser. Le applicazioni mobili scritte in Flutter 1 potranno essere adattate per lavorare su desktop e web senza riscrivere il codice dopo il passaggio a Flutter 2.
La parte principale del codice Flutter è scritta in Dart, mentre il motore runtime per l'esecuzione delle applicazioni è scritto in C++. Durante lo sviluppo delle applicazioni, oltre al linguaggio Dart nativo di Flutter, è possibile utilizzare l'interfaccia Dart Foreign Function per chiamare codice in C/C++. Le elevate prestazioni di esecuzione sono ottenute grazie alla compilazione delle applicazioni in codice macchina per le piattaforme target. In questo modo, il programma non deve essere ricompilato dopo ogni modifica: Dart offre una modalità di hot reload che consente di apportare modifiche all'applicazione in esecuzione e di valutare immediatamente i risultati.
Flutter 2 annuncia il supporto completo per lo sviluppo di applicazioni per il Web, adatto per implementazioni lavorative. Vengono menzionati tre scenari principali per l'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 ci sono l'utilizzo di meccanismi di accelerazione per il rendering di grafica 2D e 3D, una flessibile disposizione degli elementi sullo schermo e un motore di rendering CanvasKit compilabile in WebAssembly.
Il supporto per le applicazioni desktop è attualmente in fase di beta testing e sarà stabilizzato quest'anno in uno dei prossimi aggiornamenti. Le aziende Canonical, Microsoft e Toyota hanno annunciato il supporto per lo sviluppo tramite Flutter. Canonical ha scelto Flutter come framework principale per le sue applicazioni e lo utilizza anche nello sviluppo di 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 automobilistico. La shell personalizzata dell'operating system a microkernel Fuchsia, in sviluppo presso Google, è anch'essa basata su Flutter.

È 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 distingue dalla versione originale del linguaggio Dart per l'uso di una forte tipizzazione statica (i tipi possono essere dedotti automaticamente, pertanto l'indicazione dei tipi non è obbligatoria, ma la tipizzazione dinamica non è più utilizzata e il tipo calcolato inizialmente è fissato alla variabile, quindi viene applicato un controllo rigoroso del tipo).
L'uscita si distingue per la stabilizzazione della modalità di utilizzo sicuro del valore «Null» (null safety), che consente di evitare crash causati da tentativi di utilizzo di variabili il cui valore non è definito e impostato a «Null». Questa modalità implica che le variabili non possano avere valori non definiti, a meno che non venga esplicitamente assegnato il valore null. In questa modalità, i tipi di variabili vengono considerati rigorosamente, permettendo al compilatore di applicare ulteriori ottimizzazioni. La corrispondenza dei tipi viene controllata 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 l'implementazione stabile della libreria FFI, che consente di scrivere codice ad alte prestazioni in grado di accedere alle API in linguaggio C. Sono state effettuate ottimizzazioni in termini di prestazioni e dimensioni. Sono stati aggiunti strumenti per gli sviluppatori e un sistema di profiling del codice, scritti utilizzando Flutter, insieme a nuovi plugin per lo sviluppo di applicazioni in Dart e Flutter per Android Studio/IntelliJ e VS Code.

Fonte: opennet.ru
