Marco Neè, programmatore di Softfour, ci racconta la sua esperienza maturata nello sviluppo di applicazioni mobile cross-platform con Xamarin e Flutter. Leggi l’intervista e scopri perché il framework di casa Google lo ha conquistato.

Ciao Marco, ci racconti il tuo background e come ti sei approccito a Xamarin?

Essendo prevalentemente uno sviluppatore C# la scelta è subito ricaduta su Xamarin quando, nel 2018, si è presentata la necessità di sviluppare un’app mobile (solo android) con limitate richieste grafiche e necessità di consegna in breve tempo. Abbiamo poi affrontato un’app più complessa (questa volta Xamarin.Forms, ma solo android) con una serie di funzionalità specifiche della piattaforma – accelerometro, giroscopio, fotocamera – e con relativa scrittura di codice specifico per android.

La scelta di optare per Xamarin.Forms fu dovuta alla disponibilità di kit grafici da usare come base di partenza, ottima cosa per un developer senza esperienza di design.

Disegno di donna davanti a uno smartphone gigante

Quali difficoltà hai incontrato?

Premetto innanzitutto che sono un Mac user e ho sviluppato in Xamarin usando Visual Studio for Mac.

Avendo sviluppato web app in asp.net non ero nuovo al pattern MVC per cui il passaggio all’MVVM di Xamarin è stato abbastanza indolore… almeno fino allo scontro con XAML.

XAML è stato difficile da digerire su più livelli, non tanto dal punto di vista logico quanto da quello di IDE. Tra le maggiori criticità code completion zoppicante (o assente), errori in fase di build che scompaiono dopo un riavvio, lentezza incredibile durante il disegno dell’interfaccia nonostante l’aver tentato vari strumenti tra cui Gorilla Player.

Far dialogare view e viewmodel quando lo XAML non risponde come ti aspetteresti è a dir poco frustrante.

Quando hai avuto a che fare con Flutter per la prima volta?

L’opportunità di testare Flutter si è presentata in occasione dello sviluppo di un’altra app Xamarin. Un progetto interno in cui ho dovuto mettere le mani ad un sample abbastanza complesso per capire eventuali tempi di sviluppo o scogli.

Lo smarrimento iniziale (Streams, BloCs ecc… sono molto distanti dal mondo .NET) è stato superato abbastanza velocemente: la struttura ad “albero” degli widget era facilmente comprensibile dopo più di un anno passato a lavorare con lo XAML, e i suoi Stacks e il linguaggio dart si sono dimostrati sorprendentemente semplici.

Come ti sei trovato con il pattern BLoC?

Con questo pattern mi sono trovato subito a mio agio. Così diverso dall’MVC al punto che pensavo mi avrebbe fatto perdere una marea di ore, si è invece rivelato straordinariamente intuitivo.

Nessuna gestione della navigazione tramite routes, nessun push o pop (a meno che non lo si voglia specificatamente), nessun binding DA o VERSO il viewmodel, bensì stati ed eventi che rebuildano la porzione di codice interessata. Cosa volere di più!

Come è stato lo sviluppo con questo nuovo linguaggio?

Uno dei vantaggi più grossi dello sviluppare con Flutter è che… non stai sviluppando con Xamarin.

Seriamente, sganciarsi da Microsoft significa poter optare per tutta una serie di IDE (VS Code, IntelliJ ecc…), e per un Mac user è un bel passo avanti. Io ho scelto IntelliJ ed è stato una boccata d’aria fresca. A migliorare ulteriormente l’esperienza di sviluppo si aggiunge il fantastico Hot Reload di Flutter.

Disegno di uomo che guarda lo smartphone

Inoltre fatta la build una prima volta non è più necessario il rebuild, se non dopo l’aggiunta di assets o di dart packages. Un enorme risparmio di tempo, e non solo per quanto riguarda l’interfaccia grafica: qualsiasi riga di codice viene recepita istantaneamente, giusto il tempo di premere cmd+s. Un’esperienza di sviluppo più immediata rispetto a quella desktop non me l’aspettavo proprio, sono rimasto meravigliato.

Altri motivi per cui scegliere Flutter, secondo la tua esperienza

Oltre ai già citati HotReload, IntelliJ e BLoC puntando su Flutter posso contare sulle componenti Material.

L’app ha un aspetto passabile fin da subito, nessun paragone con Xamarin. Widget di ogni tipo su FlutterGems aiutano a realizzare un’app gradevole e dal look professionale anche senza passare per UI Kit di terze parti, questo anche grazie all’hot reload che rende fattibile dedicare del tempo al design dell’interfaccia. Prestazioni elevate e un UI molto più smooth chiudono il cerchio.

Sono sicuro che tutto quello che ho realizzato con Flutter si possa ottenere anche con Xamarin. Tuttavia la rapidità con cui sono riuscito a ottenere risultati soddisfacenti col primo paragonata al tempo dedicato al secondo mi fanno propendere decisamente per Flutter.

Marco e tutto il team Softfour sono a tua disposizione per il servizio di sviluppo software in outsourcing. Hai bisogno? Contattaci senza impegno.