Pubblicato da Tim Sneath, Group Product Manager per Flutter
Durante l'evento Flutter Live del 4 dicembre scorso, abbiamo annunciato il rilascio di Flutter 1.0, la prima release stabile del toolkit UI di Google per la creazione di esperienze native incredibili per iOS e Android da un'unica base di codice.
Lo sviluppo di dispositivi mobili multipiattaforma oggi richiede molti compromessi. Gli sviluppatori sono obbligati a scegliere tra creare più volte la stessa app per diversi sistemi operativi e accettare una soluzione comune che rinunci a velocità e precisione native a favore della portabilità. Con Flutter, crediamo di poter offrire una soluzione che garantisca il meglio di entrambi i mondi: grafica e UI con accelerazione hardware e un codice ARM nativo applicabile a entrambi i noti sistemi operativi mobili.
Flutter non sostituisce i tradizionali modelli di app Apple e Android per lo sviluppo di app per dispositivi mobili; piuttosto, si tratta di un motore di app che può essere incorporato in un'applicazione esistente o utilizzato per un'applicazione del tutto nuova.
Ci piace pensare alle caratteristiche di Flutter distribuite su quattro dimensioni:
Se uniamo tutto questo e lo combiniamo con i migliori strumenti per Visual Studio Code, Android Studio, IntelliJ o qualsiasi altro editor di programmazione, ecco qui Flutter, un ambiente di sviluppo per la creazione di incredibili esperienze native per iOS e Android da un'unica base di codice.
Abbiamo annunciato la prima versione beta di Flutter dieci mesi fa, al Mobile World Congress, e siamo stati entusiasti di vedere con quanta velocità sia stata adottata dalla community, come evidenziato dalle migliaia di app Flutter già presenti negli store Apple e Google Play ancora prima della nostra release 1.0. Appare chiaro che gli sviluppatori siano pronti per un nuovo approccio allo sviluppo di UI.
Internamente, Flutter è stata adottata da Google per una vasta gamma di prodotti, tra cui Google Ads, che è passato a Flutter per le sue app iOS e Android. E ancora prima della 1.0, un ampio numero di clienti globali, inclusi Abbey Road Studios, Alibaba, Capital One, Groupon, Hamilton, JD.com, Philips Hue, Reflectly e Tencent, sta sviluppando o distribuendo app con Flutter.
Michael Jones, Senior Director di Engineering del team Capital One, afferma quanto segue riguardo all'esperienza con Flutter:
"Siamo entusiasti del contributo unico apportato da Flutter allo sviluppo multipiattaforma ad alte prestazioni. I nostri ingegneri hanno apprezzato la promessa di uno sviluppo rapido e le funzionalità di hot reload, e nel corso dell'ultimo anno abbiamo assistito a progressi incredibili per quanto riguarda il framework e soprattutto lo sviluppo delle integrazioni native". "Flutter consente a Capital One di considerare le funzionalità non nell'ottica 'iOS o Android', quanto piuttosto secondo un modello orientato ai dispositivi mobili indipendentemente dal sistema operativo. Siamo entusiasti di vedere Flutter 1.0 e siamo ancora una volta impressionati dal ritmo dell'avanzamento e dal fermento nella comunità ingegneristica".
"Siamo entusiasti del contributo unico apportato da Flutter allo sviluppo multipiattaforma ad alte prestazioni. I nostri ingegneri hanno apprezzato la promessa di uno sviluppo rapido e le funzionalità di hot reload, e nel corso dell'ultimo anno abbiamo assistito a progressi incredibili per quanto riguarda il framework e soprattutto lo sviluppo delle integrazioni native".
"Flutter consente a Capital One di considerare le funzionalità non nell'ottica 'iOS o Android', quanto piuttosto secondo un modello orientato ai dispositivi mobili indipendentemente dal sistema operativo. Siamo entusiasti di vedere Flutter 1.0 e siamo ancora una volta impressionati dal ritmo dell'avanzamento e dal fermento nella comunità ingegneristica".
Durante l'evento Flutter Live, il famoso servizio di pagamento Square ha annunciato due nuovi SDK Flutter che semplificheranno la modalità di accettazione di pagamenti per beni e servizi con Flutter, che ciò avvenga di persona usando un lettore di pagamenti Square o attraverso un'app per dispositivi mobili. Square ha mostrato un esempio di utilizzo del loro SDK per i pagamenti attraverso l'app di Collins Family Orchards, un'azienda agricola a conduzione familiare che coltiva e vende frutta nei mercati agricoli del Pacifico nord occidentale.
Lo sviluppatore dell'app di Collins Family Orchards, Dean Papastrat, in merito alla sua esperienza ha affermato:
"Sono rimasto sconvolto dalla velocità di tutte le animazioni e le transizioni nelle build di produzione. Come sviluppatore Web, è stato davvero facile eseguire la transizione a Flutter e non riesco a credere di essere riuscito a sviluppare un'app completamente funzionante in grado di ricevere pagamenti in solo una settimana".
A Flutter Live, inoltre, 2Dimensions ha annunciato la disponibilità immediata di Flare, un nuovo eccezionale strumento che consente ai designer di creare animazioni vettoriali che possono essere incorporate direttamente in un'app Flutter e manipolate mediante codice. Flare elimina la necessità di programmare in un'app, animare in un'altra e convertire il tutto in base alle risorse e al codice specifici per un dispositivo.
Le animazioni realizzate con Flare possono essere incorporate come widget in un'app Flutter esistente, in modo che possano partecipare all'intero processo di composizione e che sia possibile sovrapporre ad esse altro testo, livelli grafici o persino widget UI. Questa modalità di integrazione libera le animazioni dalle limitazioni di tipo "scatola nera" di altre architetture e rende possibile stabilire una collaborazione tra i designer e gli sviluppatori fino al completamento dell'app. Un'integrazione così stretta tra Flutter e Flare fornisce offerte uniche interessanti per designer e animatori digitali che desiderano creare esperienze per dispositivi mobili estremamente efficaci.
Un altro partner che ha scommesso su Flutter è Nevercode, un provider di strumenti di integrazione continua e delivery (CI/CD) per app per dispositivi mobili in rapida crescita. A Flutter Live ha annunciato Codemagic, un nuovo strumento progettato appositamente per Flutter con l'obiettivo di semplificare l'automazione del processo di sviluppo e creazione delle app Flutter per Android e per iOS con un'unica operazione. Oggi disponibile in versione beta, Codemagic consente di selezionare un repository GitHub contenente un progetto Flutter, creare con pochi clic dei flussi di build continui per l'esecuzione di test e generare app bundle binari che possono essere caricati negli store Apple e Google Play.
Abbiamo realizzato un breve video che illustra la quantità e la varietà delle app che gli sviluppatori hanno creato con Flutter a partire dalla versione beta:
A partire dalla prima versione beta, abbiamo lavorato per aggiungere funzionalità e dettagli a Flutter. In particolare, abbiamo arricchito il nostro servizio di assistenza per le app per iOS "pixel-perfect" di nuovi widget, esteso l'assistenza a quasi venti diversi servizi Firebase e lavorato per migliorare le prestazioni e ridurre le dimensioni delle app Flutter. Abbiamo anche risolto migliaia di problemi notificati dai feedback ricevuti dalla community.
Inoltre, Flutter include l'ultima versione della piattaforma Dart, la 2.1, un aggiornamento di Dart 2 che offre dimensioni di codice ridotte, controlli di tipo più rapidi e una migliore usabilità per errori di tipo. Dart 2.1 consente di incrementare la produttività in fase di creazione di esperienze utente grazie alle sue nuove funzionalità del linguaggio. Gli sviluppatori che hanno già adottato Dart 2.1 affermano di riscontrare miglioramenti significativi della velocità già soltanto con il passaggio al motore più recente:
Sebbene il traguardo principale della release 1.0 siano state la stabilizzazione e la correzione di bug, presenteremo anche l'anteprima di due nuove funzionalità fondamentali che gli sviluppatori potranno provare in modalità anteprima e che, lo anticipiamo, sarà distribuita con la release del prossimo trimestre a febbraio 2019: Add to App e Platform Views.
Quando abbiamo creato Flutter ci siamo concentrati sulla produttività, tenendo a mente lo scenario in cui qualcuno voglia sviluppare una nuova applicazione da zero. Ma ovviamente non tutti hanno la fortuna di poter iniziare da zero. Parlando con alcuni dei nostri maggiori clienti, è risultato chiaro che volessero utilizzare Flutter per creare nuove esperienze e funzionalità per gli utenti all'interno di un'applicazione esistente o per convertire gradualmente la loro applicazione in un'app Flutter.
L'architettura di Flutter supporta bene questo modello; dopotutto, ogni app Flutter include un container Android e iOS host. Ciononostante ci siamo impegnati per semplificare il processo di adozione graduale di Flutter aggiornando i nostri modelli, gli strumenti e le guide per le app esistenti. Abbiamo fatto in modo che la condivisione di risorse tra Flutter e il codice host risulti più semplice. Inoltre, abbiamo rivisto gli strumenti per semplificare la modalità di collegamento a un processo Flutter esistente senza dover lanciare il debugger con l'applicazione.
Continueremo a lavorare per rendere questa esperienza sempre migliore. Nonostante molti clienti stiano già utilizzando la nostra guida per Add to App con successo, continueremo ad aggiungere esempi e a estendere l'assistenza a scenari più complessi. Nel frattempo, le nostre istruzioni per aggiungere Flutter alle app esistenti sono disponibili sul nostro wiki; inoltre, è possibile seguire il restante lavoro sul Project board di GitHub.
Sebbene Add to App rappresenti un modo utile per introdurre gradualmente Flutter in un'applicazione esistente, in alcuni casi risulta più utile procedere con l'operazione contraria e incorporare un controllo per piattaforma Android o iOS in un'app Flutter.
Pertanto abbiamo introdotto dei widget di visualizzazione delle piattaforme (AndroidView e UiKitView) che consentono di incorporare questo tipo di contenuti su ciascuna piattaforma. Abbiamo presentato in anteprima l'assistenza Android per un paio di mesi, ma ora la stiamo estendendo anche a iOS e stiamo iniziando ad aggiungere plug-in come Google Maps e WebView, che ne trarranno vantaggio.
AndroidView
UiKitView
Come altri componenti, i nostri widget di visualizzazione delle piattaforme fanno parte del modello di composizione, il che significa che è possibile integrarlo con altri contenuti Flutter. Ad esempio, nello screenshot in alto, il pulsante di azione mobile nell'angolo in basso a destra è un widget Flutter con colore di sfondo con 50% alpha. Ciò ben dimostra i vantaggi architetturali unici di Flutter.
Sebbene questo lavoro sia pronto per essere messo alla prova dagli sviluppatori, noi continuiamo a impegnarci per migliorare le prestazioni e la compatibilità dei dispositivi, pertanto raccomandiamo di fare attenzione in caso di distribuzione di app basate su Platform Views. Continuiamo a lavorare attivamente per ottimizzare le visualizzazioni delle piattaforme e prevediamo che saranno pronte per la produzione in tempo per l'aggiornamento del prossimo trimestre.
Gli obiettivi principali di Flutter finora sono stati iOS e Android. Ciononostante, le nostre ambizioni per Flutter si estendono ben oltre i dispositivi mobili, fino a raggiungere un'ampia serie di piattaforme. Infatti, sin dall'inizio Flutter è stato progettato come toolkit UI portatile sufficientemente flessibile da arrivare ovunque siano presenti dei pixel.
Parte di questo lavoro già è stata realizzata nel progetto open source. Flutter Desktop Embedding è un progetto in fase iniziale che porta Flutter ai sistemi operativi per desktop inclusi Windows, MacOS e Linux. Inoltre, abbiamo recentemente pubblicato informazioni informali sull'utilizzo di Flutter su Raspberry Pi per fornire una dimostrazione dell'assistenza per l'incorporamento di Flutter in dispositivi di dimensioni inferiori, che potrebbe non includere una ambiente desktop completo.
Questa settimana, a Flutter Live, abbiamo fornito la prima anteprima di un progetto sperimentale su cui stiamo lavorando nei nostri laboratori, il quale estende significativamente i confini che Flutter è in grado di raggiungere.
Hummingbird è un'implementazione basata su Web del runtime di Flutter che sfrutta la capacità della piattaforma Dart di compilare non solo il codice ARM nativo, ma anche JavaScript. Ciò consente di eseguire il codice Flutter sul Web basato su standard senza apportare modifiche.
Abbiamo realizzato un articolo del blog dedicato a Medium che descrive i dettagli relativi all'implementazione tecnica di Hummingbird. E avremo molto altro da condividere su Hummingbird al Google I/O del 2019, speriamo di vederti lì!
Ovviamente, i dispositivi mobili rimangono la nostra immediata priorità, quindi nei prossimi mesi vedrai il nostro investimento applicato ai principali scenari che coinvolgono i dispositivi mobili.
Con Flutter 1.0 abbiamo creato un nuovo canale "stabile", in aggiunta ai canali beta, dev e master già esistenti. Il canale stabile viene aggiornato con minore frequenza rispetto agli altri canali, ma confidiamo fortemente nel suo livello di qualità poiché le build sono già state testate attraverso gli altri canali. Prevediamo di aggiornare il canale stabile su base trimestrale con le nostre build testate sul campo.
Puoi scaricare Flutter 1.0 dal nostro sito web all'indirizzo https://flutter.io, dove potrai trovare anche la documentazione per gli sviluppatori che effettuano il passaggio da altri framework, i code lab, un cookbook di esempi comuni e dei video tecnici.
Siamo fortemente in debito nei confronti dei primi utenti che si sono uniti a noi in questo viaggio finora, fornendo feedback, identificando problemi, creando contenuti e in generale dando forma al prodotto. La community di Flutter rappresenta una delle maggiori risorse intesa come progetto: è un gruppo disponibile, eterogeneo e cooperativo di persone che ci offrono il proprio aiuto in modo disinteressato perché, come noi, tengono a questo progetto open source. Grazie!
Flutter è pronto. Cosa creerai?