Flutter รจ un progetto open source per la creazione di applicazioni mobili native multipiattaforma, nonchรฉ web application e siti web. Il progetto รจ stato sviluppato da Google ed รจ stato presentato per la prima volta nel 2018. Da allora questo framework, anche grazie al supporto di una sempre piรน vasta community di sviluppatori, รจ cresciuto notevolmente ed oggi รจ utilizzato da moltissime aziende, tra cui Google stesso.

Cosโรจ Flutter?
Flutter รจ un framework open-source nato in seno ai laboratori di Google. Tutti gli sviluppatori possono scaricare ed installare lโambiente di Flutter e sviluppare applicazioni native per diversi ambienti senza preoccuparsi di dover utilizzare i linguaggi peculiari dagli stessi.
Questo รจ possibile grazie alla tecnologia integrata nel framework che consente di sviluppare app native utilizzando una vasta serie di librerie che comprendono svariati elementi delle interfacce utente previste dai diversi sistemi operativi.
Perchรฉ conviene utilizzare Flutter?
La forza di Flutter รจ, soprattutto, nello sviluppo multipiattaforma: grazie a questo framework, infatti, รจ possibile sviluppare app native sia per iOS che per Android ed eventualmente anche fruibili tramite un comune browser web.
In pratica Flutter richiede un unico codebase per tutte le piattaforme semplificando notevolmente i processi di sviluppo, riducendone contestualmente tempi e costi.
Uno sviluppatore che desidera sviluppare un app per tutti gli OS, quindi, non dovrร preoccuparsi di scrivere la medesima app nei differenti linguaggi nativi in quanto questo processo sarร gestito automaticamente dal framework.
Flutter Vs. React Native: quali sono le differenze?
Flutter e React Native hanno molte cose in comune: si tratta, senza dubbio, dei due framework che oggi si contendono lo scettro tra gli ambienti di sviluppo per applicativi ibridi multipiattaforma.
Entrambi sono progetti open source (e quindi sono utilizzabili da chiunque senza dover sopportare costi di licenza) e nascono allโinterno dei laboratori di aziende leader del settore (Google ha creato Flutter, Facebook ha creato React Native) quindi, entrambi, hanno tutte le carte in regola per essere scelti come ambiente di sviluppo preferito.
Sia Flutter che React Native, inoltre, possiedono tantissime funzionalitร e sono sufficientemente potenti per essere utilizzati come base di sviluppo di quasi ogni tipo di applicazione!
Ma in cosa differiscono Flutter e React Native?
Flutter risulta piรน facile da usare in quanto รจ piรน โresistenteโ agli aggiornamenti di sistema: significa che quando iOS o Android aggiornano il sistema operativo, le app sviluppate rimarranno presumibilmente invariate. Al contrario, React Native รจ molto piรน dipendente dagli elementi nativi, quindi al rilascio di qualche aggiornamento degli OS potrebbero comparire alcuni problemi nellโapp di lancio.
Flutter, inoltre, puรฒ vantare ottimi plug-in per la geolocalizzazione e la mappatura che lo rendono la scelta migliore se si ha bisogno di creare app che sfruttano tali funzionalitร .
Al di la di ciรฒ, Flutter e React Native sono entrambe ottime scelte per risparmiare tempo e denaro nello sviluppo di app ibride e quale framework scegliere dipenderร prevalentemente dalle preferenze dello sviluppatore.
Come รจ fatto e come funziona Flutter?
Flutter si basa sul linguaggio Dart.
Dart รจ un linguaggio di programmazione sviluppato da Google, orientato agli oggetti per il web e completamente open source. Eโ stato presentato per la prima volta nel 2011, ed รจ stato rilasciato in versione stabile solo nel 2018. Attualmente lโultima versione รจ la 2.17.5 (22 giugno 2022).
Dart รจ linguaggio strutturato ma, allo stessto tempo, molto flessibile che puรฒ essere utilizzato per creare applicazioni web e mobile con prestazioni elevate. Strutturalmente รจ molto simile ai noti linguaggi di programmazione orientati agli oggetti come, ad esempop, Java o C#. La sintassi del linguaggio รจ piuttosto simile a quella di C, cosa che ha semplificato parecchio la sua diffusione presso una vasta platea di sviluppatori.
La finalitร per cui รจ stato sviluppato Dart รจ quella di fornire agli sviluppatori un linguaggio efficente con cui creare applicazioni cross-platform con Flutter. Grazie a Dart le app vengono sviluppate molto piรน rapidamente: il linguaggio รจ unico per iOS e Android e questo evita lunghi processi di traduzione da una piattaforma allโaltra.
Lโarchitettura di Flutter รจ organizzata a livelli e puรฒ essere definita a strati. Ciascuno strato รจ composto da una serie di librerie tra loro indipendenti ma che dipendono ciascuna dal livello sottostante.
A livello strutturale possiamo identificare tre strati. Dal piรน profondo al piรน superficiale troviamo::
- strato embedder: รจ lo strato piรน profondo ed interviene sul device a livello nativo
- strato engine: utilizza il linguaggio C++ per rendere molto efficienti e veloci le applicazioni realizzate con Flutter rispetto a quelle che utilizzano linguaggi interpretati
- strato framework: รจ lo strato piรน superficiale di Flutter che fa uso del linguaggio Dart, il quale mette a disposizione librerie ed astrazioni per lo sviluppo delle applicazioni
Per Flutter ogni elemento รจ un Widget. Si definisce "Widget" ogni oggetto che compare a schermo e con cui lโutente puรฒ o meno interagire. Ogni pulsante e testo visualizzato, ad esempio, รจ un widget avente determinate caratteristiche.
Lโinterfaccia delle applicazioni create con Flutter, quindi, รจ composta da vari widget i quali possono essere nidificati gli uni negli altri. I widget possono influenzarsi a vicenda e reagire, tramite funzioni integrate, a cambiamenti di stato dallโesterno.
Per tutti gli elementi principali dellโinterfaccia utente vengono forniti in dotazione i rispettivi widget che soddisfano i requisiti di progettazione di Android e iOS e/o delle piรน comuni applicazioni web.
Se necessario, i widget possono essere ampliati con funzioni aggiuntive. Eโ anche possibile creare widget personalizzati che possono essere combinati perfettamente con quelli standard previsti di default in Flutter.
Preparare lโambiente di sviluppo
In questo articolo utilizzeremo lโapproccio a Flutter piรน completo che prevede la possibilitร di sviluppare applicazioni anche per iOS. Per farlo abbiamo la necessitร di utilizzare un MAC in quanto solo cosรฌ รจ possibile poter sviluppare anche per lโambiente iOS.
Questo, ovviamente, non esclude la possibilitร di installare Flutter su piattaforme Windows o Ubuntu ma in questi casi, purtroppo, viene preclusa la possibilitร di sviluppo per ambienti iOS.
Per una corretta installazione del framework consigliamo un minimo di 50GB di spazio libero su disco: questo spazio sarร necessario ad ospitare i software ed i vari progetti che andremo a sviluppare. I software che dobbiamo installare sono i seguenti:
- SDK Flutter โ reperibile tramite il seguente link: https://flutter.dev
- Xcode โ reperibile direttamente tramite App Store
- Android Studio โ reperibile tramite il seguente link: https://developer.android.com
Per prima cosa รจ necessario installare Xcode allโultima versione disponibile, dopodichรฉ vi suggerisco di passare allโinstallazione di Android Studio (questโultimo ci sarร utile anche come editor di progetto). Una volta installati questi software passiamo allโinstazzione dellโSDK di Flutter (SDK รจ lโacronimo di Software Development Kit). Dopo averlo scaricato, per prima cosa, dovremo scompattare lโarchivio, lanciare lโeseguibile e seguire le istruzioni a schermo.
Una volta installato i software necessari, prima di procedere allo sviluppo del nostro primo progetto Flutter, รจ consigliato settare le variabili di ambiente in modo da poter utilizzare correttamente i comandi di Flutter. Aprite il terminale ed lanciate il seguente comando:
export PATH="$PATH:[path-to-flutter-folder]/flutter/bin"
Ovviamente al posto di "path-to-flutter-folder" รจ necessario inserite il percorso fisico completo della directory dove avete scompattato il pacchetto con lโSDK Flutter.
Verificare lโinstallazione: Flutter Doctor
Ecco un comando davvero utile:
Flutter doctor -v
Tramite questo comando avrete a disposizione un sistema di diagnostica che vi fornirร una serie di informazioni che vi aiuteranno a comprendere se avete installato tutto nel modo corretto o se ci sono stati eventuali errori e/o warnings.
Ad esempio, nello screenshot qui sotto potete notare come il sistema non rileva la connessione ad un device fisico โPopiโ.
Il comando in questione puรฒ essere molto utile non solo in fase di installazione ma anche ogni qualvolta qualcosa non funzioni a dovere, essendo utile per capire se tutto lโambiente รจ correttamente configurato o se cโรจ qualcosa fuori posto.
Probabilmente, la prima volta che lancerete il comando, il tool vi dirร che non tutte le licenze Android sono state accettate. Behโฆ nulla di cui preoccuparsi: in questo, come in altri casi, Flutter Doctor vi fornirร anche un suggerimento su come risolvere questo warning. Nel caso delle licenze mancanti, se non erro, il comando da lanciare sarร :
Flutter doctor โandroid-licenses
Conclusioni
In questo primo articolo introduttivo su Flutter abbiamo visto le caratteristiche principali del framework ed abbiamo fatto un veloce raffronto con React Native. A seguire abbiamo visto come effettuare lโinstallazione su Mac: abbiamo installato i software per gestire gli ambienti iOS ed Android, installato lโSDK Flutter ed effettuato test di configurazione con il comando Flutter doctor. A questo punto siamo pronti ad implementare le nostre applicazioni con Flutter.