Cos’è Flutter e perché impararlo

Cos’è Flutter e perché impararlo

Giuseppe Speranza Di Giuseppe Speranza


framework flutter google

Flutter is an open source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase

fonte: flutter.dev

Cos’è Flutter?

Flutter è un framework open-source ideato direttamente da Google per rispondere alla continua evoluzione dei dispositivi mobile. L’obiettivo è quello di utilizzare una singola codebase per lo sviluppo di app cross platform che girano in maniera nativa su dispositivi Android e su iodispositivi iOS, inoltre con le ultime versioni - ormai stabili - anche Web e Desktop. 

Le prestazioni native di Flutter derivano da uno substrato scritto in C/C++, o meglio chiamato Flutter Engine, e uno strato scritto in Dart.

L’architettura di Flutter

La sua architettura può essere riassunta con la seguente immagine:

Fonte: Architettura/flutter.dev

I livelli di Flutter

Conosciamo meglio i 3 livelli:

  • Embedder: fornisce un punto di ingresso al sistema operativo sottostante. Questo livello è scritto nel linguaggio appropriato per la piattaforma su cui gira, attualmente Java e C++ per Android, Objective-C/Objective-C++ per iOS e macOS, e C++ per Windows e Linux; in altre parole consente alle app scritte in Flutter di poter girare su qualsiasi sistema operativo;
  • Flutter Engine: è il core di Flutter, scritto interamente in C/C++, si occupa di fornire supporto a basso livello per il rendering dei widget dell’app Flutter, utilizzando la libreria Skia per le animazioni 2D. L’Engine è esposto al primo livello (Framework) attraverso la libreria dart:iu che espone le funzioni primitive di basso livello come quelle per il text-rendering, la gestione I/O;
  • Dart: è un linguaggio strutturato e flessibile creato da Google, lavora a stretto contatto con il Flutter Engine con il quale è in grado di fornire la funzione di “Hot-Reload”, cioè ogni modifica del codice viene iniettata immediatamente nell’applicazione in modo da visualizzare all’istante i cambiamenti senza un riavvio completo.

Esempio di Hot-Reload

Flutter è stato lanciato sul mercato nel Maggio 2017 ma la prima versione stabile risale a Dicembre 2018. Da quel momento non gli è servito molto tempo per aumentare la sua popolarità e il suo utilizzo da parte del pubblico. Ad oggi (Dicembre 2021) Flutter vanta ben 133k Stelle su github a fronte di quasi 100k di react-native.

Questi valori sono intuibili anche su Google trend nell’immagine sottostante con altri suoi competitors.

Perché usare Flutter?

Dopo aver descritto brevemente alcuni particolari tecnici del funzionamento di Flutter e aver fatto notare di quanto la sua popolarità sia in netto aumento rispetto al suo più diretto competitor, viene naturale chiedersi: perchè usarlo? Qual è realmente il suo valore aggiunto? 

Sicuramente le feature di Flutter mi hanno spinto ad adottarlo, abbandonando completamente i vecchi tool. Vediamole nel dettaglio:

  1. Single Codebase
  2. Hot-Reload e velocità di sviluppo
  3. Ecosistema ricco di Widget
  4. Dart
  5. Community
  6. MVP
  7. Google

1# Single Codebase

Come già ampiamente detto, Flutter garantisce lo sviluppo di un’applicazione sfruttando una singola base di codice. In parole povere, con lo stesso codice con cui si crea un’applicazione iOS si può generare un applicazione Android, Web o Desktop. Questa feature è stabile dal rilascio della versione 2.0.

2# Hot-Reload e velocità di sviluppo

Questa sua caratteristica permette agli sviluppatori di poter osservare istantaneamente le modifiche effettuate sul codice, garantendo maggiori performance di sviluppo e tempi più snelli anche di debugging. 

3# Ecosistema ricco di Widget

Possiamo descrivere Flutter come un intero widget.

Tutto al suo interno è un widget e i widget possono essere sia classi che funzioni, questo permette infatti all’applicazione dei principi della programmazione ad oggetti nello sviluppo della UI. 

Ogni widget è customizzabile a proprio piacimento, ad esempio si possono wrappare dei widget dentro altri in modo da garantire specifiche funzioni su diverse risoluzioni dello schermo. 

Flutter offre una miriade di UI widget che rispettano tutti gli attuali princìpi chiave del design di applicativi sia web che mobile, offrendo sempre ottime performance.

Il suo SDK è in grado di garantire tutto questo in quanto è l’unico che non utilizza alcun Bridge in Javascript per la creazione dei componenti, ma lavora facendo comunicare direttamente il core con il dispositivo aumentandone drasticamente le prestazioni. 

I widget in Flutter sono organizzati attraverso un albero, in cui ognuno di loro può contenerne altri e così via. Sarà il programmatore a dover fare attenzione all’organizzazione dei widget nella propria App, cercando di ingegnerizzare al meglio lo sviluppo.

Esempio di un widget tree in Flutter:

4# Dart

Dart è un linguaggio creato da Google, include una tipizzazione forte e una debole, inoltre offre una ricca libreria standard, un garbage collection, generics e async-await. Dart è molto simile a Java ma per molte funzionalità si ispira ad altri linguaggi. 

5# Community

Negli ultimi anni Flutter è cresciuto tantissimo di popolarità, meritandosi un posto nell’olimpo dei Framework per sviluppo cross platform. Questo ha favorito la crescita di una sempre più forte community attorno ad esso che contribuisce costantemente al miglioramento del framework, rendendo molto semplice la risoluzione di problematiche comuni. 

6# MVP

Flutter può essere un fattore chiave per tutte quelle startup che devono creare un MVP. 

Un MVP creato con Flutter è compatibile con diversi dispositivi da iOS ad Android, per finire a Desktop e Web. Sicuramente questo è un fattore attrattivo per molti investitori, potendo facilitarli nella ricerca e prova del progetto di business creato.

7# Google

Il supporto a lungo termine di Google è una garanzia dell’affidabilità di Flutter nel futuro. Il team preposto al suo mantenimento apporta costantemente migliorie al Framework. Tenete sempre sott’occhio la Roadmap ufficiale che trovate a questo link.

I contro di Flutter

Dopo aver parlato ampiamente delle feature positive di Flutter, vorrei esporre anche alcuni dei suoi aspetti negativi.

Innanzitutto il Bundle Size dell’App finale è sicuramente molto più grande rispetto a quella di un'App nativa. Al momento un'App minima generata con Flutter, pesa almeno 4.3mb a fronte dei circa 500kb di un'App Nativa sviluppata con Java o Kotlin; inoltre essendo ancora costantemente in sviluppo, alcune funzioni o librerie potrebbero essere non ancora totalmente disponibili o compatibili. Come anche il supporto 3D, al momento Flutter non supporta questa feature, tuttavia è stata annunciata nella Roadmap futura.

La popolarità di Flutter è in costante aumento e non accenna a fermarsi. Ormai sempre più aziende lo adottano nei propri progetti, e se il presente sembra ancora React-native il futuro sarà sicuramente Flutter. Sul sito ufficiale di Flutter è possibile vedere alcune delle Top Apps create da aziende del calibro di Alibaba, Google, Uber, eBay e Airbnb.

Primi passi con Flutter

Per iniziare con Flutter vi consiglio di seguire dettagliatamente la documentazione a questo link, e poi di controllare bene i requisiti del vostro pc, nello specifico:

Inoltre grazie alla community estremamente attiva di questo fantastico Framework, insieme alla sezione Learn della documentazione ufficiale, è possibile imparare un sacco di nozioni, cercando tra video e articoli che vi guideranno nello sviluppo della vostra prima App!

Impara a programmare in 3 mesi con il Corso di Coding Hackademy su Laravel PHP

Diventa Sviluppatore web in 3 mesi

Scopri il coding bootcamp Hackademy

Programma Completo