Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 1 di 37
  • livello intermedio
Indice lezioni

Flutter: nuovo framework per lo sviluppo cross-platform

Introduzione a Flutter, framework per lo sviluppo di app multipiattaforma per dispositivi mobili, diretto concorrente (e valida alternativa) a Xamarin.
Introduzione a Flutter, framework per lo sviluppo di app multipiattaforma per dispositivi mobili, diretto concorrente (e valida alternativa) a Xamarin.
Link copiato negli appunti

La continua evoluzione dei dispositivi mobile ha spinto gli sviluppatori a sviscerare e comprendere in modo approfondito i meccanismi e le linee guida dei principali sistemi operativi (OS), ossia iOS e Android, per poter raggiungere quanti più utenti possibili tramite i vari market. Nonostante l’evoluzione di questi OS e l’introduzione di nuovi linguaggi e approcci abbiano semplificato e velocizzato lo sviluppo delle applicazioni native, resta comunque difficile per uno unico sviluppatore riuscire a realizzare e mantenere nel tempo un’app nativa per le diverse piattaforme.

Il motivo principale risiede nell’assenza di una codebase condivisa tra le app per le diverse piattaforme mobile.

Per risolvere questo problema, sono stati proposti diversi framework per realizzare app ibride multipiattaforma (o cross-platform) in HTML5 e Javascript, che sfruttano gli approcci tipici delle app native e delle webapp. Alcuni esempi sono Apache Cordova e Ionic, di cui abbiamo già parlato su HTML.it. L’utilizzo di questi framework ha permesso a molti sviluppatori di ridurre tantissimo i tempi di sviluppo delle proprie app e di dover mantenere nel tempo una sola codebase.

Nonostante la notevole semplificazione introdotta, purtroppo questi framework non permettono di sfruttare a pieno le caratteristiche tipiche delle diverse piattaforme mobile, e soffrono di una maggiore lentezza nell’esecuzione e nell’accesso alle risorse locali. A risolvere in parte quest’ulteriore problema ci ha pensato Xamarin che ha permesso ai propri sviluppatori di realizzare le proprie app native per Android, iOS e Windows con interfacce native e un codice condiviso basato su C#. Ciò è possibile proprio grazie al framework offerto da Xamarin.Form, di cui abbiamo parlato in questa guida.

Nel corso del 2018, un nuovo framework sviluppato da Google è entrato nel panorama dello sviluppo delle app cross-platform: si tratta di Flutter, oggetto di questa guida.

Con una beta version rilasciata a Gennaio 2018, Flutter in meno di un anno (4 Dicembre 2018) è giunto alla versione 1.0 (che ne denota la prima versione stabile), e per molti sviluppatori mobile si presta ad essere un’ottima alternativa a Xamarin.

L’intento di questa guida sarà quello di fornire i mezzi di base necessari a creare una nuova applicazione mobile per iOS e Android con Flutter.

In questa lezione, invece, ci concentreremo su Flutter e sul confronto tra esso e Xamarin.

Cos’è Flutter

Flutter è un progetto open source totalmente gratuito per la creazione di app native di alta qualità su iOS e Android in tempi rapidi e con il supporto alle interfacce native. Il progetto è stato sviluppato da Google e mantenuto da quest’ultimo e dalla community; è utilizzato da moltissimi sviluppatori e grandi aziende, tra cui Alibaba, Google stesso e molti altri ancora.

L’obiettivo di Flutter è quello di creare nuove app tramite:

  • una fase di sviluppo rapida con funzionalità quali l’hot reload, che non richiede di ricompilare il codice;
  • interfacce utente espressive e flessibili con un set di widget componibili, librerie per animazioni e un'architettura stratificata ed estensibile;
  • performance molto vicine a quelle native;
  • una codebase unica per le applicazioni Android e iOS.

Per rendere ciò possibile, Flutter si compone di due macro strati:

  • uno strato scritto in C/C++;
  • uno strato scritto in Dart, un nuovo e moderno linguaggio orientato agli oggetti che definisce la maggior parte del suo sistema (gesture, animazioni, framework, widget, ecc.) ed offre agli sviluppatori un grande controllo sul sistema stesso.

Flutter, inoltre, è diverso dalla maggior parte dei framework per lo sviluppo di app ibride poiché non usa né WebView né i widget OEM disponibili con il dispositivo. Infatti, quando un’app nativa interagisce con la piattaforma per creare un widget, quest’ultimo viene scelto tra gli OEM widget disponibili, viene visualizzato all’interno di un canvas e gli eventi vengono passati ai widget che a loro volta comunicheranno con l’applicazione nativa. Tale processo è descritto visualmente nella figura seguente.

Figura 1. Interazione tra un’app nativa e la piattaforma di destinazione (fonte: Hacker Noon) (click per ingrandire)

Interazione tra un'app nativa e la piattaforma di destinazione

Questo passaggio intermedio non è più necessario con Flutter, che sfrutta il proprio motore di rendering ad alte prestazioni per creare i widget.

Figura 2. Interazione tra un’app Flutter e la piattaforma di destinazione (fonte: Hacker Noon) (click per ingrandire)

Interazione tra un'app Flutter e la piattaforma di destinazione

In particolare, Flutter utilizza Skia, una libreria open source per la creazione di grafica 2D, e si interfaccia con le SDK native di Android e iOS.

Nelle prossime lezioni, l’architettura di Flutter verrà analizzata in modo più approfondito.

Il confronto con Xamarin

Entriamo un po’ più nel dettaglio e vediamo le principali differenze tra Flutter e Xamarin.

Nell’ultimo anno, Xamarin si è affermato tra i framework più popolari e utilizzati, con il 7.4% di share secondo i risultati del questionario di StackOverflow. Ciò è stato possibile grazie alla sua presenza sul mercato da oltre due anni e ad una community molto ampia se paragonata a quella di Flutter. Quest'ultimo, infatti, è un prodotto giovane ma con una community in forte crescita, e sta riscuotendo grande consenso tra gli sviluppatori, affermandosi come valida alternativa a Xamarin.

A livello di portabilità, Flutter è destinato allo sviluppo di Android e iOS, mentre Xamarin supporta anche Windows, nonché app per MacOS. Anche se Xamarin copre un ecosistema più ampio, ciò non costituisce un problema per Flutter, che si focalizza solo su iOS e Android sfruttando il loro dominio sul mercato mobile.

Per quanto riguarda il linguaggio, nonostante C# sia largamente utilizzato nel mondo della programmazione ad oggetti, Dart:

Un’altra caratteristica interessante di Flutter è la compatibilità con le librerie e gli SDK di terze parti, nonché il riutilizzo di codice nativo in diversi linguaggi. Aspetto, questo, non ben supportato in Xamarin.

Prerogativa fondamentale delle applicazioni ibride, infine, sono le performance. In questo senso, Flutter offre performance molto vicine a quelle offerte da un’app nativa, cosa che Xamarin.Forms non è in grado di fare.

Una comparazione sintetica tra i due framework per lo sviluppo di applicazioni è riportata nella seguente figura.

Figura 3. Tabella di comparazione tra Xamarin e Flutter (fonte: AltexSoft) (click per ingrandire)

Tabella di comparazione tra Xamarin e Flutter

Ti consigliamo anche