Torna a Articoli
Oct 26, 2019
5 min read

Flutter: Beautiful native apps in record time

Google Play e Apple Store sono le due più grandi piattaforme di distribuzione applicazioni per i nostri dispositivi mobile. Fino a quando si tratta di sviluppare per un solo ambiente, la scelta della tecnologia migliore da utilizzare è facile; ma cosa possiamo fare quando il cliente vuole approdare sia su iOS che su Android?

preview

L’ultimo appuntamento dello Sharing Cafè in Plansoft è stata l’occasione per conoscere meglio Flutter, un interessantissimo tool di Google presentatoci dal nostro collega Iacopo Ciao.

Una piccola parentesi introduttiva: Google Play e Apple Store sono le due più grandi piattaforme di distribuzione applicazioni per i nostri dispositivi mobile e ogni app che si rispetti è presente su almeno una delle due. Fino a quando si tratta di sviluppare per un solo ambiente, la scelta della tecnologia migliore da utilizzare è facile; ma cosa possiamo fare quando il cliente vuole approdare sia su iOS che su Android?

La prima cosa che ci viene in mente, a meno che non si tratti di sviluppare un videogioco, è quella di orientarci verso una soluzione ibrida, il tutto per non dover scrivere due volte lo stesso codice. In base alle nostre necessità esistono delle alternative disponibili sul mercato e dei prodotti adeguati per realizzare con successo il nostro applicativo. Il problema è: a quale prezzo?

Le criticità da affrontare, in base al prodotto scelto, potrebbero essere le più svariate: l’applicazione potrebbe risultare rallentata, non apparire come nativa, avere dei componenti che si comportano in maniera simile ma non uguale sui diversi sistemi operativi o, peggio ancora, riportare dei conflitti in base alla sua versione.

La soluzione presentata in Plansoft è stata quella di Flutter, un toolkit UI in Dart ideato da Google per sviluppare applicazioni compilate in modo nativo per mobile, web e desktop a partire da un unico codebase.

Che cos’è Dart?

Dart è un linguaggio di programmazione object-oriented completamente open source e sviluppato da Google, nato con lo scopo di sostituire JavaScript come lingua franca per lo sviluppo web sulla piattaforma web aperto.

La sua sintassi C-Like permette un rapido apprendimento, offre un supporto nativo per la programmazione reattiva e una lunga serie di ottimizzazioni per la gestione di interfacce grafiche.

Il suo compilatore permette di scrivere programmi sia per il web che per desktop e server, attraverso l’uso di due diverse piattaforme: Dart Native e Dart Web. Il linguaggio Dart offre così al tempo stesso migliori prestazioni, più facilità di sviluppo per progetti di grandi dimensioni e migliori funzionalità legate alla sicurezza.

Che cos’ha Flutter che gli altri non hanno?

Innanzitutto è indipendente dal sistema operativo; i framework maggiormente utilizzati, al fine di comunicare con le API native, implementano uno strato intermedio definito “Bridge”: dal lato dell’esperienza utente l’adozione di un intermediario comporta una perdita di fluidità, mentre dal lato sviluppo si subisce un aumento dei costi di manutenzione, in quanto i componenti possono variare in base al SO.

Flutter, per ovviare a questo problema, ha sviluppato un sistema a Widget che viene disegnato direttamente sul canvass tramite Skia, un potente render grafico 2D scritto in C++.

Rimanendo indipendente dalla piattaforma, l’interfaccia funzionerà sempre e in maniera consistente per l’utente.

Flutter, utilizzando i propri componenti anziché quelli OEM, garantisce dunque che il prodotto finale sia identico a prescindere dal target di destinazione.

Il toolkit di Flutter, a differenza degli altri SDK, è costruito dalla composizione di API accessibili su ogni livello, scalabili tramite lo stile dichiarativo e predisposte allo sviluppo di componenti reattivi. Flutter inoltre mette a disposizione due grandi famiglie di Widgets per la gestione dei layouts: Material design e Cupertino.

Un altro aspetto degna di nota è il suo hot reload: tale funzionalità permette di modificare la propria UI, risolvere bug o aggiungere funzioni semplicemente eseguendo il software. Ogni volta che il sorgente verrà modificato, la Dart Virtual Machine si occuperà di aggiornare l’applicazione in tempo reale senza dover riavviare l’applicazione.

Chi usa Flutter?

Questi i principali e più famosi utilizzatori di Flutter:

  • The New York Times
  • Google Assistant
  • Groupon
  • Alibaba Group
  • BMW
  • SQUARE
  • Ebay
  • NuBank
  • Dream11

Conclusioni

In conclusione, Flutter si differenzia dalle altre soluzioni presenti sul mercato per sviluppare mobile app poiché non usa WebView o OEM widget; inoltre ha solo un sottile strato di codice C/C++ che garantisce prestazioni nettamente superiori ai suoi concorrenti.

Flutter ha una curva di apprendimento piuttosto rapida, offre numerose librerie ben documentate e rappresenta dunque una soluzione vincente in quanto permette, con un’adeguata formazione, di produrre app native destinate ad entrambi i principali ecosistemi mobile senza richiedere costosi porting.

Crediti

  • Questo articolo è stato inizialmente scritto per plansoft.it, qui potete trovare il vecchio articolo su Archive.org
  • Revisione del testo a cura di Martino Spighi ❤️