back to top

Flutter: framework multipiattaforma per lo sviluppo di app iOS e Android

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.

Flutter

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.

Pubblicitร 

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
La struttura stratificata di Flutter

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:

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
Flutter Doctor

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โ€.

Esempio di errore rilevato da Flutter Doctor

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.

Altri contenuti interessanti

Pubblicitร 

Leggi anche...

Vibe Coding: cosโ€™รจ, come funziona e quali sono i migliori strumenti AI per programmare

Immagina di poter scrivere software senza dover digitare una...

I migliori libri per imparare a programmare in Python

Imparare a programmare in Python รจ un passo fondamentale...

Il file manifest.json: cosโ€™รจ e a cosa serve

Il file manifest.json รจ un componente chiave nelle applicazioni web moderne,...

Java: cosโ€™รจ e a cosa serve lโ€™operatore modulo (%)

In Java, l'operatore modulo รจ rappresentato dal simbolo "%"...

Radice quadrata in C: vediamo come calcolarla in diversi modi

La radice quadrata รจ un'operazione matematica piuttosto comune (in...

Sperimentare la sequenza di Collatz in C++

Vediamo come verificare la congettura di Collatz con C++....
Pubblicitร