Tutti i corsiTutti gli articoli
Cos’è Flutter e a cosa serve: recensione sul framework per creare app native Android e iOS

Cos’è Flutter e a cosa serve: recensione sul framework per creare app native Android e iOS

Aggiornato il17.lug.2020/Gabriel Gatu/5 minuti

## Indice dei contenuti

In questo articolo ti spiegherò cos’è Flutter e quali sono i suoi punti di forza. Non solo, porterò la tua attenzione anche su alcuni fatti da sapere prima di adottarne l’utilizzo, concludendo l’articolo con un mio giudizio personale.

Prima di iniziare, credo sia giusto che tu sappia il mio background di esperienze a riguardo: utilizzo Flutter per creare app da metà del 2018, ovvero dal rilascio della prima versione beta, arrivando ancor prima da un utilizzo intenso di Android e da un piccolo periodo di transizione con Ionic, per imposizioni lavorative.

Bene, iniziamo!

Flutter sta avendo un periodo di crescita molto vivace, mentre altre tecnologie paragonabili, come React Native e Ionic, perdono sempre più terreno.

Ci sono, infatti, ancora molte ferite aperte tra le community di sviluppatori, per via delle scelte di Airbnb e Udacity di abbandonare React Native, il concorrente principale di Flutter.

E, a giudicare anche dai forum online, da Reddit e Linkedin, React Native non gode più di quella crescita che l’ha caratterizzato durante gli anni 2016/17. Con ciò non voglio affatto affermare che sia una tecnologia in declino e dalla morte certa, nessuno sviluppatore sano di mente potrebbe pensare una cosa del genere, anche perché, chiunque abbia un minimo di competenza nel settore, sa bene che, nel momento in cui una tecnologia entra all'interno dello Stack di sviluppo di un’azienda, ci vogliono anni, se non decenni, affinché possa essere interamente soppiantata.

Tuttavia, non si può neanche ignorare ciò che sta accadendo: da quando Google ha pubblicato la prima versione alpha di Flutternel 2017, il suo utilizzo (ed il mondo open source che lo circonda) è letteralmente esploso.

Flutter è passato, in un solo anno, da versione alpha, considerata sperimentale e non adatta all'utilizzo in produzione, ad una versione stabile e ricca di funzioni, utilizzato da grandi compagnie (tra cui tante cinesi) per integrazioni di nuove funzionalità in applicazioni già in produzione o per svilupparne di completamente nuove.

Trend di crescita di diversi framework cross platform

― Trend di crescita di diversi framework cross platform

## Cos'è Flutter e cosa permette di fare?

1. É un kit di sviluppo software (SDK) open source, creato da Google per sviluppare velocemente applicazioni cross platform per iOS ed Android, condividendo lo stesso codice.

2. Utilizza un nuovo linguaggio di programmazione chiamato Dart,ispirato a Java, con un comportamento simile a quello di Typescript (ovvero, è come se fosse Javascript potenziato e con alcune migliorie al suo interno solitamente molto apprezzate dagli sviluppatori, come l’implementazione diretta nel linguaggio dei nullability checks, extension methods e async/await/streams).

3. Utilizza due modalità di compilazione:

  • JIT (Just in Time) durante lo sviluppo, permettendo funzionalità come Hot Reload immediato;

  • AOT in fase di produzione, che permette di ottenere performance nettamente superiori alle controparti React ed Ionic.

4. Utilizza un motore grafico interno per il rendering della grafica dell'applicazione, al contrario di React Native che si basa sui componenti base della piattaforma e di Ionic che, invece, utilizza una WebView. Il motore grafico si chiama Skia (https://skia.org/) ed è uno dei punti di svolta rispetto al passato. Skia, tra l'altro, viene anche utilizzato sia da Google che da FireFox per il rendering dei siti internet all'interno dei loro browser.

5. Raccoglie un insieme di funzionalità e buone pratiche di programmazione che gli permette di incrementare la produttività degli sviluppatori:

  • Hot Reload: mentre si sviluppa, l'app si aggiorna in tempo reale appena le nuove modifiche vengono salvate;

  • Librerie esterne: esiste direttamente un sito (pub.dev) all'interno del quale vengono raccolte tutte le librerie che possono essere utilizzate in Flutter e, per implementarle, è sufficiente aggiungere una riga di codice in un file chiamato "pubspec.yaml";

  • Rendering dinamico a seconda della piattaforma: è possibile renderizzare componenti in modo dinamico a seconda della tipologia di dispotivo su cui l'applicazione è in esecuzione (iOS / Android);

  • Codice nativo: nel caso una libreria non fosse ancora presente o se ne avesse semplicemente la necessità, è possibile integrare il codice Flutter con del codice nativo (Java / Swift);

  • Indipendente da un editor: Flutter può essere tranquillamente utilizzato con qualsiasi editor, usando un binario disponibile da riga di comando. Naturalmente è consigliato l'utilizzo di uno dei due editor ufficialmente supportati: Visual Studio Code ed Android Studio.

Screenshots dell'applicazione di Galleria, che contiene al suo interno vari esempi di componenti Flutter per Android ed iOS.

― Screenshots dell'applicazione di Galleria, che contiene al suo interno vari esempi di componenti Flutter per Android ed iOS.

## A cosa stare attenti prima di scegliere Flutter

Premetto: non c'è un lato totalmente negativo di Flutter ma, piuttosto, un insieme di accortezze di cui bisogna essere a conoscenza prima di compiere una scelta definitiva.

1. Come già anticipato, Flutter utilizza Skia per il rendering della grafica dell'app sullo schermo: questo comporta l’inutilizzo dei Widget nativi, sostituiti da quelli definiti nelle librerie di Flutter (comunque, va detto che rispecchiano in maniera estremamente fedele quelli ufficiali). Di conseguenza, non si può sempre garantire la fedeltà al 100% delle schermate alle linee guida di design della piattaforma nativa. Personalmente, posso affermare che per il 99% dei casi questo non è un problema, dato che le applicazioni moderne tendono ad avere un design proprio ed unificato sulle due piattaforme. Ho riportato questo punto più per correttezza.

2. Essendo Flutter una piattaforma giovane e non essendoci ancora esperti che possono definirsi tali (fatto molto positivo per coloro che vogliono puntare e specializzarsi su questa piattaforma), potrebbe essere difficile per un’azienda trovare personale qualificato da assumere. Per gli sviluppatori, invece, il problema potrebbe essere che alcune buone pratiche, come la gestione dello stato di un’app, si stanno ancora definendo: di conseguenza vengono consigliate più pratiche invece di una sola, anche se, bene o male, sono tutte basate su Reactive programming e Redux.

## Conclusioni

Abbiamo visto cos’è Flutter e scoperto quali sono i suoi punti di forza e le sue debolezze.

”Quindi, consiglieresti l’utilizzo di Flutter oppure no?”

Basandomi sull’esperienza di utilizzo personale, mi sento assolutamente sereno nel consigliarlo a tutti coloro che sono interessati nello sviluppo di applicazioni mobile, sia per iOS che per Android, sopratutto nel caso di nuovi progetti. Nei prossimi anni mi aspetto una forte espansione di Flutter, molto più di come abbia fatto finora, essendosi già guadagnata, in soli due anni, la fama di far risparmiare molto tempo agli sviluppatori (e, di conseguenza, soldi alle aziende) e di essere una piattaforma stabile e produttiva. Molti sviluppatori decideranno di specializzarsi in Flutter, altri ci inizieranno la propria carriera: in rete si inizia a trovare del materiale utile per iniziale, oltre alla guida ufficiale in inglese, e sicuramente nei prossimi anni ciò non farà altro che aumentare, rendendo sempre più facile avviarsi a questo potente framework, rafforzandone anche la community stessa.

Per Flutter si prospetta un futuro d’oro, non male averlo già scoperto, no?

Ti auguro il meglio per la tua carriera,

Gabriel.