Google ha rilasciato Dart 2.12, una nuova versione del linguaggio utilizzato per creare app in Flutter. Il rilascio accompagna Flutter 2.0.
Con il rilascio di Flutter 2.0, Google sta anche portando Dart 2.12 su stable. Nel caso non lo sapessi, Dart è il linguaggio utilizzato da Flutter. È un linguaggio basato su TypeScript ma include alcune funzionalità aggiuntive del linguaggio, incluse quelle che sto per esaminare.
Sicurezza nulla
La sicurezza nulla è una caratteristica del linguaggio davvero eccezionale. Ti costringe a considerare se una variabile sarà mai nulla e a gestire esplicitamente potenziali situazioni nulle, consentendoti anche di garantire che variabili specifiche non saranno mai nulle.
In Dart 2.12 ora c'è il pieno supporto per la sicurezza nulla, con una sintassi simile a Swift e Kotlin. Esiste anche lo smart-casting, in cui se Dart sa con certezza che una variabile normalmente nullable non può essere nulla, la trasformerà implicitamente in una forma non nullable.
Poiché la sicurezza nulla è una modifica (molto) importante, questa funzionalità è attivabile. Se esegui l'aggiornamento a Dart 2.12, la compilazione non si interromperà e non dovrai dedicare ore ad aggiungere suggerimenti sull'annullamento dei valori nulla a tutto. Puoi anche utilizzare dipendenze null-safe se il tuo progetto non è ancora null-safe.
Una volta deciso di eseguire la migrazione, puoi utilizzare lo strumento di migrazione integrato (il dardo migra) e/o il guida alla migrazione per sistemare tutto.
Inoltre, sebbene la sicurezza null sia inclusa in Dart 2.12, se crei un nuovo progetto Flutter, la sicurezza null non verrà abilitata immediatamente. Dovrai abilitarlo manualmente. I nuovi progetti Dart avranno la sicurezza nulla abilitata.
Interfaccia per funzioni estere
Anche se l'attenzione di Dart (e Flutter) è rivolta alla piena compatibilità multipiattaforma, ci sono ancora alcune cose che devono essere fatte in modo nativo. Per semplificare le operazioni native, Dart dispone di un'interfaccia per funzioni esterne, o FFI. L'FFI ti consente di interagire con il codice C di Dart senza dover ricorrere a strane chiamate API basate su stringhe o altri metodi di interoperabilità goffi.
E con Dart 2.12, FFI è ora stabile, il che significa che è pronto per essere utilizzato in progetti di produzione ed è per lo più completo di funzionalità.
Tenendo questo in mente, ci sono alcuni cambiamenti nel FFI, inclusi un paio di cambiamenti importanti.
La maggior parte dell'attenzione di questa versione era su come le strutture possono essere utilizzate con Dart e C. Innanzitutto, ora puoi passare le strutture nel codice C per riferimento e valore, mentre in precedenza erano supportati solo i riferimenti. Un'altra caratteristica importante è il supporto per le strutture nidificate, che non era presente prima di questa versione.
Ora passiamo alle modifiche sostanziali. Se stavi utilizzando FFI, potrebbe essere necessario aggiornare il codice per funzionare con 2.12. Con questa versione di FFI non è più possibile creare strutture vuote. Se per qualche motivo ne hai bisogno, puoi utilizzare il nuovo tipo "Opaco". Ci sono anche alcune modifiche al funzionamento di alcune funzioni integrate di FFI, cosa che puoi fare leggi qui.
Infine, c'è un nuovo pacchetto per FFI che consente di generare wrapper FFI da file di intestazione C esistenti, chiamati ffigen. Se hai molto codice C da utilizzare, con molti metodi API, questo sarà molto utile. Anche se la quantità di codice C di cui disponi è piccola, questa è una caratteristica comoda.
E questo è praticamente tutto per Dart 2.12. Con l'aggiunta della sicurezza nulla e di una libreria di interoperabilità C stabile, Dart si sta trasformando in un linguaggio molto ricco di funzionalità. Fateci sapere cosa ne pensate di Dart 2.12 nei commenti!