Come convincere il tuo capo ad usare Flutter

Alberto Bonacina
Sempre al computer
Published in
4 min readFeb 27, 2020

Flutter è un Framework per lo sviluppo di applicazioni rilasciato da Google nel 2017 in maniera gratuita e Open Source che permette agli sviluppatori di creare app native per iOS e Android (in lavorazione anche per Web e Desktop) utilizzando una singola base di codice. Flutter vuole rendere lo sviluppo di applicazioni facile, veloce e più produttivo possibile attraverso funzionalità quali: Hot reload, vastissimo catalogo di widget, grandi prestazioni e una solida community. In questo articolo andrò ad elencare alcune caratteristiche di Flutter che lo rendono un framework da considerare per il prossimo progetto di sviluppo di una app mobile.

Mobile development with Flutter, image from unDraw
Mobile development image from UnDraw

Hot Reload

Una delle caratteristiche più apprezzate di Flutter e che lo rendono un framework perfetto per lo sviluppo di applicazioni è la capacità, a seguito di una modifica nel codice, di vederne subito il risultato sul device proprio come si è abituati nello sviluppo web con il refresh della pagina web. Non ci sono più le lunghe attese date dalla compilazione del codice a seguito di una modifica, ma il tutto avviene quasi in tempo reale permettendo un notevole risparmio nei tempi di sviluppo.

Cross Platform

Flutter permette di sviluppare applicazioni native per Android e iOS partendo da una singola base e condividendo la stragrande maggioranza del codice tra i due sistemi, come per esempio tutta la business logic, la persistenza e l’accesso alle risorse quali storage e database interno della app. Attraverso la personalizzazione dei widget messi a disposizione è possibile avere un’aderenza piena al design previsto per l’applicazione che sarà lo stesso sia su iOS che su Android.

Flutter consente tuttavia di mantenere le peculiarità dei due sistemi operativi rendendo l’esperienza veramente nativa in quanto vengono rispettate le convenzioni tipiche dei due sistemi come ad esempio:

  • la diversa fisica nello scroll delle liste su Android e iOS (una analisi più dettagliata qui)
  • lo stile degli switch (classe personalizza nella documentazione)
  • gli effetti di transizione tra le pagine

Se utilizzati nella maniera corretta, i widget messi a diposizione da Flutter, vengono utilizzati in automatico e coerentemente con il sistema, Android o iOS, su cui viene lanciata l’applicazione senza che lo sviluppatore debba preoccuparsi della sua effettiva implementazione.

Widget, widget, widget!

Questo è il mantra dello sviluppo con Flutter in quanto ogni componente che compare sullo schermo è un widget, dal semplice campo di testo, alla lista con 1000 righe fino all’animazione più complessa. Questo permette di customizzare al massimo l’aspetto dei componenti presenti sullo schermo per renderli aderenti alla grafica che si deve implementare. Essendo un framework cross-platform Flutter mette a disposizione anche dei widget che sono specifici per una determinata piattaforma come i Material Components widgets propri di Android e i Cupertino (iOS-style) widgets che aderiscono alle linee guida di iOS.

Pacchetti e estensioni

La communty ha messo a disposizione un sito: pub.dev nel quale è possibile trovare una quantità smisurata di pacchetti pronti per essere inclusi all’interno di una applicazione Flutter per estenderne le funzionalità. I pacchetti spaziano dal networking alla modifica delle immagini, dai componenti personalizzati all’interfacciamento con l’hardware del dispositivo e con poche righe di codice è possibile importarli nel proprio progetto. Per conoscere i pacchetti Flutter che non si possono non conoscere ho scritto un articolo, in inglese, su Hashnode che vi consiglio di andare a leggere: Top 10 packages to use with Flutter.

Software image from UnDraw

Prestazioni

Le applicazioni sviluppate con Flutter sono compilate nei rispettivi binari per singola piattaforma utilizzando motori di visualizzazione scritti in C/C++ che producono applicazioni veloci e performanti. Le applicazioni raggiungono i 60 fps costanti sulla maggior parte dei device e in alcune casi anche 120fps sui device che li supportano.

Scrivere applicazioni native per singola piattaforma è difficile da battere in termini di prestazioni e rendering fluido, ma quando si parla di framework cross-platform, Flutter ha dei chiari vantaggi rispetto alla concorrenza.

Continuous Integration e Continuous Delivery CI/CD

E’ possibile integrare Flutter con diversi servizi per la continuous integration e continuous delivery che permetto di ridurre sensibilmente i tempi di testing automatico di una app e la sua successiva pubblicazione sugli store. Due dei più utilizzati sono: Codemagic e Fastlane che consentono, a seguito del push del codice all’interno del proprio repository di far partire test automatici per garantire il corretto funzionamento della propria app e successiva pubblicazione dell’applicazione all’interno del canale alpha, beta o direttamente in produzione sugli store Android e Apple.

Conclusioni

Flutter è un framework sicuramente da considerare durante le valutazioni di sviluppo di una applicazione cross-platform in quanto gode di una comunità molto attiva che ogni giorno lavora per rendere il framework migliore, il suo sviluppo è supportato direttamente da Google essendo una delle 4 piattaforme (insieme ad Android, iOS e Web) supportate del Material Design, le prestazioni sono incredibili non essendoci nessuna tecnologia legata al web (javascript, html, css) che deve essere “tradotta” e fatta funzionare in nativo ma l’applicazione viene direttamente compilata in codice nativo, l’integrazione con l’infrastruttura Firebase è ottima e il team di sviluppo sta lavorando per portare le applicazioni anche su Web e Desktop permettendo di utilizzare un’unica base di codice e farlo girare ovunque… più cross-platform di così.

Code Strong, Alberto

--

--