Nuova versione Flutter 3.22

Nuova versione Flutter 3.22

Ecco che torniamo a parlare di un’altra release stabile di Flutter (come nell’articolo precedente QUI)! Questa volta parliamo della Nuova versione Flutter 3.22. Viene introdotto WebAssembly nel canale stabile, un backend Vulkan completo per Impeller su Android, che promette una grafica più fluida e un notevole incremento delle prestazioni. Stiamo anche introducendo flussi di lavoro semplificati con nuove proprietà di stato dei widget, dimensionamento dinamico della vista e una migliore convalida dei moduli. Ma non è tutto: troverete il bundling delle risorse condizionato dal sapore, un’anteprima di Vertex AI per Firebase in Dart e DevTools aggiornati per semplificarvi la vita.

In pochi mesi dall’ultimo aggiornamento, ci sono state 1595 richieste di pull dalla comunità di Flutter, con 37 nuovi membri della comunità che hanno contribuito a Flutter per la prima volta!

Quindi, approfondiamo di seguito tutte le nuove funzionalità e i miglioramenti che la comunità di Flutter ha apportato a quest’ultima release Nuova versione Flutter 3.22!

WebAssembly
Con il rilascio di Flutter 3.22, Wasm è ora disponibile sul canale stabile e offre miglioramenti significativi delle prestazioni. Svolgendo dei test, utilizzando Chrome su un MacBook M1, il tempo di rendering dei fotogrammi dell’app Wonderous è migliorato di 2 volte in media e di 3 volte negli scenari peggiori.
Questi miglioramenti sono fondamentali per le applicazioni con animazioni e transizioni ricche, in cui è essenziale mantenere un frame rate fluido. Wasm aiuta a raggiungere questo obiettivo riducendo i colli di bottiglia delle prestazioni, con conseguenti animazioni e transizioni più fluide. Per iniziare a usare Wasm con le proprie applicazioni web Flutter, consultiamo la documentazione di Dart Wasm e la documentazione di Flutter Wasm. Per l’annuncio completo, visitate il post sul blog di Flutter al Google I/O.

Engine
La Nuova versione Flutter 3.22 introduce aggiornamenti significativi a Impeller, il motore di rendering che alimenta le applicazioni Flutter. I punti salienti includono il completamento del backend Vulkan su Android per una grafica più fluida e prestazioni migliori, ottimizzazioni continue per gli effetti di sfocatura e il rendering di percorsi complessi e una nuova API sperimentale per i test con Impeller. In linea con la roadmap, Google si impegna a migliorare la qualità e le prestazioni di Impeller, anche completando la migrazione di iOS a Impeller e ampliando il supporto per Android.

Impeller
Completata la funzionalità di backend Vulkan su Android
Con questa release, il backend Vulkan di Impeller per Android è completo. In particolare, negli ultimi mesi il team ha lavorato duramente per completare l’implementazione di miscele avanzate veloci, il supporto per gli shader di frammenti personalizzati con l’API FragmentProgram, il supporto per PlatformView (anche se richiede una piccola migrazione dell’API) e l’implementazione completa di tutti gli stili di sfocatura.

Anteprima Android
Nella versione stabile 3.19, dopo aver apportato miglioramenti al backend OpenGL di Impeller, Google ha invitato gli utenti a provare Impeller su dispositivi Android sia con che senza supporto Vulkan. Negli ultimi mesi, dopo aver valutato le prestazioni del backend OpenGL e stimato il lavoro rimanente sul backend Vulkan, Google ha deciso di concentrare gli sforzi per rendere il backend Vulkan pronto per la produzione.

Impeller risolve il problema del jank di compilazione degli shader. Inoltre, nei benchmark ha superato il renderer legacy per quanto riguarda i tempi medi, il 90° e il 99° percentile dei fotogrammi. Riteniamo quindi che le prestazioni del backend Vulkan su Android siano accettabili. In questa versione (3.22), le applicazioni che optano per Impeller utilizzano il backend Vulkan, se disponibile. In una versione futura, questo diventerà l’impostazione predefinita. Quando un’applicazione che opta per Impeller viene eseguita su un dispositivo che non supporta Vulkan, Flutter tornerà automaticamente a utilizzare OpenGL ES con Skia. Non è necessaria alcuna azione da parte dell’utente. In futuro, quando riterremo che il backend OpenGL ES di Impeller sia pronto per la produzione, questo fallback utilizzerà anche Impeller.

Poiché l’anteprima di Impeller su Android continua attraverso il ciclo stabile 3.22, agli sviluppatori di Flutter devono aggiornarsi all’ultima versione stabile e di segnalare eventuali problemi riscontrati quando Impeller è abilitato. Il feedback in questa fase è prezioso per garantire che Impeller abbia successo su Android e che Google sarà in grado di renderlo predefinito in una release più avanti nel corso dell’anno. L’ecosistema hardware di Android è molto vario. Per questo motivo, il feedback più utile su Impeller dovrebbe includere informazioni dettagliate sul dispositivo specifico e sulla versione di Android in cui si sono verificati i problemi.

Miglioramento delle prestazioni della sfocatura
La sfocatura è stata reimplementata in Impeller sia per iOS che per Android. In particolare, il nuovo approccio, simile a quello di Skia, riduce il tempo di CPU e GPU delle sfocature di quasi la metà nei benchmark.

I tempi di rasterizzazione dei fotogrammi nel caso peggiore, al 99%, al 90% e in media e i tempi di frame della GPU in ms su un dispositivo iPhone 11 in un benchmark patologico volto a evidenziare le prestazioni delle sfocature. Dopo la riscrittura della sfocatura di Impeller, il costo della CPU e della GPU per le sfocature dei filtri di sfondo è stato quasi dimezzato. L’entità di questo miglioramento si traduce anche in casi non patologici, come quelli che si verificano nelle applicazioni tipiche.


Stencil e copertura
Impeller, sia su iOS che su Android, è passato a una nuova strategia di rendering basata sull’approccio Stencil-then-Cover descritto nel capitolo “Drawing Filled, Concave Polygons Using the Stencil Buffer” dell’OpenGL Redbook. I membri del team hanno discusso più approfonditamente questa tecnica applicata a Flutter nel problema GitHub #123671.

Questo approccio risolve il problema per cui il thread raster spendeva troppo tempo a calcolare le tassellazioni per percorsi complessi sulla CPU, ad esempio SVG e animazioni Lottie. Dopo la modifica, il tempo totale del fotogramma (thread UI sulla CPU + thread raster sulla CPU + lavoro della GPU) è molto più basso per i fotogrammi che contengono percorsi complessi. Gli utenti noteranno che le animazioni Lottie e altri percorsi complessi vengono renderizzati in modo più fluido, con un utilizzo inferiore della CPU e leggermente superiore della GPU.

Nuova API
Anche se ancora sperimentale, Flutter test accetta ora il flag –enable-impeller, che esercita Impeller utilizzando il backend Vulkan.

Struttura
Proprietà di stato dei widget
MaterialState è stato spostato fuori dalla libreria Material e rinominato WidgetState, per renderlo disponibile a Cupertino, al framework Flutter di base e agli autori di pacchetti. Per ulteriori informazioni sulla migrazione al nuovo WidgetState, consigliamo di consultare la guida alla migrazione.

Dimensionamento dinamico della vista
I miglioramenti apportati al dimensionamento dinamico della vista vanno a vantaggio degli sviluppatori che realizzano layout reattivi, garantendo una migliore adattabilità dell’interfaccia utente su vari schermi di dispositivi.

Convalida dei moduli migliorata
Grazie al contributo di SharbelOkzan, membro della comunità di Flutter, Flutter 3.22 è dotato di metodi di validazione dei moduli più flessibili che consentono agli sviluppatori di creare una gestione più robusta degli input dell’utente, migliorando sia l’usabilità che la sicurezza.

Covarianti nelle API 2D
La riduzione della necessità di effettuare cast di tipo nelle API grafiche 2D semplifica i flussi di lavoro di sviluppo e migliora le prestazioni, cosa importante per i giochi e le animazioni complesse.

Flavor bundling condizionato delle risorse
Gli sviluppatori che utilizzano la funzione flavors possono ora configurare le singole risorse in modo che vengano raggruppate solo quando si costruisce per un flavor specifico.

Trasformazione delle risorse tramite pacchetti Dart
Gli utenti possono ora configurare i pacchetti Dart per trasformare le risorse della loro applicazione mentre vengono raggruppate. Per ulteriori informazioni, consultate Trasformazione delle risorse al momento della creazione.

Android
Deep Linking
I deep links possono migliorare significativamente l’esperienza dell’utente nella vostra app Flutter, agendo come scorciatoie che guidano gli utenti a contenuti specifici all’interno della vostra app, aumentando il coinvolgimento e guidando le vendite. Sebbene i collegamenti universali per iOS e i collegamenti alle app per Android siano altamente raccomandati per la loro sicurezza e facilità d’uso, la loro impostazione può essere un po’ complicata.

Nella Nuova versione Flutter 3.22, troviamo uno strumento di validazione dei deep links all’interno di DevTools che supporta la verifica della configurazione web per le app Android. In questa versione, troviamo aggiunto una nuova serie di funzioni per aiutare a verificare le configurazioni all’interno dei file manifest di Android.

Predictive back gesture
Con la Nuova versione Flutter 3.22 ttroviamo un maggiore supporto per l’imminente funzione di ritorno predittivo di Android, in cui gli utenti possono sbirciare il percorso precedente o persino l’app precedente durante una back gesture. Sui dispositivi Android questa funzione non è ancora stata attivata, ma su GitHub si possono trovare i dettagli su come provarla.

Lo strumento Flutter applica i requisiti di versione a Gradle, AGP, Java e Kotlin
In questa versione, lo strumento Flutter applica una politica relativa alle versioni supportate per Gradle, Android Gradle Plugin (AGP), Java e Kotlin. Inizialmente, lo strumento fornisce solo avvisi.

Attualmente, le versioni supportate sono le seguenti:

  • Gradle – Completamente supportato dalla 7.0.2 alla versione attuale, altrimenti avvisa.
  • AGP – Pienamente supportato dalla versione 7.0.0 a quella attuale, altrimenti avvertire
  • Java – Pienamente supportato da Java 11 alla versione corrente, altrimenti avvertire
  • Kotlin – Pienamente supportato da 1.5.0 alla versione corrente, altrimenti avvertire


Nella prossima major release questi avvertimenti diventeranno errori, che possono essere annullati con il flag –android-skip-build-dependency-validation. Più in generale, lo strumento fornisce un avviso per almeno una release prima di abbandonare completamente il supporto (generando un errore) per una determinata versione di queste dipendenze.

Questa politica è stata discussa in una specifica di progettazione associata.

Supporto per l’uso di Gradle Kotlin DSL negli script di compilazione di Gradle su Android
Il DSL Gradle Kotlin è ora supportato in Flutter, fornendo un’alternativa al tradizionale DSL Gradle Groovy. Questo supporto consente una migliore esperienza di modifica del codice, con completamento automatico, accesso rapido alla documentazione, navigazione tra i sorgenti e refactoring contestuale.

Questo supporto iniziale è stato fornito dall’utente GitHub bartekpacia. Gli sviluppatori possono ora scegliere di riscrivere i loro script di compilazione Gradle in Kotlin per sfruttare questi vantaggi, anche se lo strumento Flutter non consente ancora di selezionare Kotlin rispetto a Groovy quando si usa flutter create.

Miglioramenti alle viste della piattaforma
Avviso per tutti gli sviluppatori di app Flutter! Se state usando Flutter per costruire applicazioni che si basano su componenti nativi di Android (come mappe, viste web o alcuni elementi dell’interfaccia utente), troveremo alcune importanti novità.

A causa di un bug in Android 14, le app costruite con le versioni precedenti di Flutter potrebbero non funzionare correttamente sui dispositivi con questa nuova versione di Android.

La Nuova versione Flutter 3.22 risolve questo problema e migliora le prestazioni complessive di questi componenti nativi nelle vostre app Android. Quindi, per assicurarvi che la vostra app funzioni senza problemi su tutti i dispositivi Android, assicuratevi di ricostruire e rilasciare la vostra app con Flutter 3.22.

Questo aggiornamento include anche miglioramenti dietro le quinte per rendere le viste della piattaforma su Android più affidabili e performanti in generale.

Fine del supporto per KitKat
La versione Android minima supportata da Flutter è ora Lollipop (API 21). A partire dalla versione stabile 3.22 di Flutter, Flutter non funzionerà più sui dispositivi con Android KitKat (API 19). Per maggiori dettagli, consultare la nostra guida alla deprecazione.
iOS
Prestazioni della vista piattaforma
Le prestazioni delle viste della piattaforma su iOS sono state un punto dolente per molti sviluppatori Flutter. Ciò è stato particolarmente evidente nelle visualizzazioni a scorrimento quando si utilizzano le viste piattaforma.

I recenti aggiornamenti affrontano direttamente questi problemi, con miglioramenti significativi in scenari come l’incorporazione di più annunci in linea all’interno di un articolo. Ecco alcuni miglioramenti chiave nel nostro benchmark:

Riduzione dell’utilizzo della GPU: L’utilizzo della GPU è stato ridotto del 50%, con conseguente riduzione del consumo energetico e un’esperienza utente potenzialmente più fluida.
Miglioramento del rendering dei fotogrammi: I tempi medi di rendering dei fotogrammi sono diminuiti di 1,66 ms (33%).
Riduzione del jank: I tempi di rendering dei fotogrammi nel caso peggiore sono stati ridotti di 3,8 ms (21%).
Se in passato si avevano problemi di prestazioni quando si utilizzavano le visualizzazioni di piattaforme multiple (come annunci, mappe, ecc.) all’interno di visualizzazioni a scorrimento, queste ottimizzazioni offrono il potenziale per un’esperienza di scorrimento più fluida e reattiva. P


Ecosistema con Nuova versione Flutter 3.22
Rilascio in anteprima dell’SDK Vertex AI for Firebase Dart
Il prodotto Vertex AI for Firebase è stato rilasciato in anteprima pubblica e include l’SDK Dart. Questo vi consente di utilizzare l’API Gemini per creare funzionalità di intelligenza artificiale generativa per le proprie applicazioni Dart o Flutter, tenendo conto della produzione, delle prestazioni e della scala aziendale. L’SDK è integrato con Firebase App Check, che protegge le chiamate API e salvaguarda l’infrastruttura backend da gravi minacce come le frodi di fatturazione, il phishing e l’impersonificazione di app.

L’SDK Dart di Google AI rimane disponibile ed è consigliato solo per la prototipazione. L’accesso a Google AI è gratuito (entro i limiti e dove disponibile) e a pagamento. Se si ha realizzato dei prototipi con l’SDK Google AI Dart e si è pronti a migrare a Vertex AI per Firebase, consigliamo di consultare la guida alla migrazione.

Aggiornamenti di DevTools
Vengono ancora migliorati i DevTools, la suite di strumenti di prestazioni e debug per Dart e Flutter. Questa versione include miglioramenti delle prestazioni, una rifinitura generale e nuove funzionalità come l’inclusione di campioni della CPU nella timeline, il filtraggio avanzato e il supporto per l’importazione e l’esportazione di istantanee della memoria.

Altri notevoli miglioramenti sono stati apportati ai pacchetti devtools_extensions e devtools_app_shared che supportano gli autori di estensioni DevTools. È stato aggiunto il supporto per la connessione di un’estensione al nuovo Dart Tooling Daemon (DTD), che consente alle estensioni DevTools di accedere ai metodi pubblici registrati da altri client DTD, come un IDE, oltre a consentire l’accesso a un’API minima del file system per interagire con il progetto di sviluppo.

Google Mobile Ads SDK per Flutter
Per coloro che monetizzano le proprie applicazioni Flutter con gli annunci, ci sono delle notizie interessanti: Google Mobile Ads per Flutter ha appena rilasciato un importante aggiornamento alla versione 5.0.1!

Supporto migliorato per User Messaging Platform (UMP) SDK: L’aggiornamento aggiunge il supporto per le ultime API dell’SDK UMP di Android versione 2.2.0 e dell’SDK UMP di iOS versione 2.4.0. L’UMP SDK è fondamentale per la conformità alle normative sulla privacy, rendendo più facile ottenere il consenso degli utenti per gli annunci personalizzati. Questa nuova versione introduce diverse nuove API per semplificare il processo di raccolta del consenso.

Ampliamento dei partner di mediazione: troviamo ampliati gli orizzonti della monetizzazione degli annunci offrendo integrazioni con partner pubblicitari popolari, tra cui Unity, Meta, AppLovin, Iron Source, Mintegral, Pangle, DT Exchange, InMobi e Liftoff. Ora è possibile massimizzare i ricavi delle app con opzioni di mediazione ampliate e un’implementazione semplificata.

Consigliamo di provare queste nuove funzionalità nelle proprie app Flutter.


Modifiche e deprecazioni con la Nuova versione Flutter 3.22
ColorScheme.fromSeed
Se il seedColor usato in ColorScheme.fromSeed ha un valore di croma elevato, il ColorScheme risultante potrebbe produrre tavolozze pastello che mancano di vivacità. Per assicurarsi che i colori di output corrispondano strettamente alla sensazione del colore di partenza, si può impostare dynamicSchemeVariant su DynamicSchemeVariant.fidelity o DynamicSchemeVariant.content. Queste opzioni generano tavolozze che si avvicinano maggiormente al colore di partenza.

Rimozione dell’incorporamento Android v1
È in corso l’eliminazione della prima versione dell’incorporamento Android. Questo probabilmente non avrà alcun effetto sulla maggior parte delle applicazioni, in quanto la versione due è stata quella predefinita per molti anni.
Lo strumento Flutter blocca già la costruzione di applicazioni con la versione uno, a meno che non sia specificamente sovrascritto con il flag — ignore-deprecation.
Questo rilascio interrompe completamente il supporto dello strumento Flutter per le applicazioni v1. Non è più possibile sovrascriverlo.

Autori di plugin, si prega di notare: quando l’incorporazione di android v1 è stata inizialmente deprecata, è stato scritto un documento di migrazione per gli autori di plugin all’indirizzo https://docs.flutter.dev/release/breaking-changes/plugin-api-migration. Come parte di questa migrazione, è stato raccomandato agli autori di plugin di mantenere il supporto per le applicazioni che utilizzano l’incorporamento v1, includendo nel loro *Plugin.java un metodo con firma

public static void registerWith(@NonNull io.flutter.plugin.common.PluginRegistry.Registrar registrar)

C’è in programma l’idea di eliminare completamente l’incorporamento Android v1 nella prossima release, a quel punto i plugin che includono un metodo con questa firma non verranno più compilati (poiché fa riferimento a un tipo dell’incorporamento Android v1).

Al momento non serve a nulla, poiché questa versione ha interrotto le applicazioni che utilizzano l’incorporamento v1. Raccomandiamo agli autori dei plugin di rilasciare versioni aggiornate dei loro plugin con il codice v1 rimosso il prima possibile, per evitare rotture nelle future versioni di Flutter.

Deprecazioni rimosse nella Nuova versione Flutter 3.22
Le modifiche apportate in questa versione includono API deprecate che sono scadute dopo il rilascio della versione 3.19. Per vedere tutte le API interessate, insieme a ulteriori indicazioni sul contesto e sulla migrazione, consigliamo di consultare la guida alle deprecazioni di questa versione. Molte di queste sono supportate da Flutter fix, comprese le correzioni rapide nell’IDE. Le correzioni massicce possono essere valutate e applicate con lo strumento a riga di comando dart fix.

Come sempre, la community ha contribuito con i test, che aiutano a identificare queste modifiche. Per saperne di più, date un’occhiata alla politica di Flutter sulle modifiche.

Conclusione sulla Nuova versione Flutter 3.22
Il cuore del successo di Flutter è proprio la community. Questo rilascio non sarebbe stato possibile senza i gli innumerevoli contributi e la incrollabile passione degli sviluppatori.

Se non lo avete ancora fatto consigliamo di esplorare Flutter 3.22. Consigliamo di leggere le note di rilascio complete e il changelog, accendendo con il proprio terminale ed eseguire flutter upgrade.

(fonte)

Innovaformazione, scuola informatica specialistica promuove l’utilizzo del framework Flutter fra le community di sviluppatori. Nell’offerta formativa trovate il Corso Flutter attivato solo per le aziende.

INFO: info@innovaformazione.net – Tel. 3471012275 (Dario Carrassi)

Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:

    Ti potrebbe interessare

    Articoli correlati