Van cross-platform framework voor mobiele app-ontwikkeling op Android en iOS, tot een UI-toolkit om apps te bouwen die werken op alle toestellen om je heen. Met Flutter heeft Google de ambitie om het eerste UI-platform voor ambient computing te maken, maar hoever staat de toolkit vandaag al?
Flutter zag aanvankelijk het levenslicht als opensource Software Development Kit (SDK) om applicaties te bouwen voor Android en iOS, die dezelfde codebase delen en native worden gecompileerd. Een eerste stabiele versie van de toolkit werd eind 2018 gelanceerd, na een bètaperiode van tien maanden.
“Het voordeel van Flutter is dat je maar één keer code schrijft en de toolkit doet de rest. Af en toe moet je nog een paar lijnen aanpassen, maar de basis is dezelfde voor de verschillende platformen, en ook de integratie met back-end services blijft onveranderd”, vertelt Koen Van Looveren, Android en Flutter Developer bij digital agency icapps.
Ambient computing
Sinds de lancering van Flutter 1.0 volgden met de regelmaat van de klok nieuwe updates en fixes, waardoor we vandaag al aan versie 1.12 toe zijn. Ondertussen wordt ook ondersteuning voor webapps in bèta getest, en is de ondersteuning voor desktopapps op macOS recent van tech preview naar alpha verhuisd. Uiteindelijk is het Googles visie om van Flutter een toolkit te maken waarmee je een app één keer schrijft om ze daarna met minimale aanpassingen op elk mogelijk apparaat te presenteren, zo liet het bedrijf afgelopen december tijdens Flutter Interact verstaan.
Flutter moet ontwikkelaars de tools in handen geven om applicaties te bouwen voor ‘ambient computing’.
“Velen van ons schakelen de hele dag tussen meerdere apparaten: telefoons, smartwatches en andere wearables, tablets, desktop- of laptopcomputers, televisies en, in toenemende mate, slimme schermen zoals de Google Nest Hub”, klinkt het in een blogpost die tijdens het event werd gepubliceerd. “In deze opkomende wereld begint de aandacht te verschuiven van elk afzonderlijk apparaat naar een omgeving waar je services en software beschikbaar zijn waar je ze nodig hebt.
Google noemt dat ‘ambient computing’ en wil ontwikkelaars met Flutter de tools in handen geven om applicaties te bouwen voor die nieuwe realiteit. Daar zijn we evenwel nog niet. Voorlopig is het zoals gezegd in de eerste plaats een toolkit voor cross-platform mobiele ontwikkeling. Loont het de moeite om Flutter vandaag al te kiezen boven bijvoorbeeld React Native of Xamarin?
Snelle groei
Koen Van Looveren is zelf ooit gestart met Java als uitverkoren programmeertaal om Android-applicaties te bouwen, en daarna overgestapt naar Kotlin. Flutter gebruikt evenwel nog een andere programmeertaal, Dart, die eveneens uit de stal van Google komt en net als de SDK nog relatief aan het begin van zijn ontwikkeling staat. “Sommige zaken zijn al beter dan in Java, maar andere zijn in Kotlin nog steeds veel beter. Er zijn nog wel wat stappen nodig voor Dart als een ‘best in class’ taal kan worden gezien”, vertelt de ontwikkelaar.
De interesse in Dart en Flutter wakkert alleszins aan, en dat kan een snelle ontwikkeling alleen maar ten goede komen. Volgens het jaarlijks rapport van GitHub was Flutter het tweede snelst groeiende opensourceproject van het afgelopen jaar. Ook Van Looveren leverde zelf al enkele bijdragen.
Flutter was in 2019 het tweede snelst groeiende opensourceproject op GitHub.
Dart was dan weer de snelst groeiende programmeertaal in de afgelopen twaalf maanden. Uit cijfers die we recent zelf op een rijtje zetten over het Belgische ontwikkelaarslandschap, op basis van data van Stack Overflow, blijkt eveneens de groeiende interesse in Flutter in ons land.
Van Looveren was snel om op de kar te springen. In januari 2019, meteen na de lancering van Flutter 1.0, begon hij al samen met twee collega’s aan een proof-of-concept voor KBC Bolero om de toolkit te verkennen. “Ik had zelf al een beetje ervaring met Flutter, maar mijn collega’s helemaal niet. We zijn vrijwel van nul gestart om in twee sprints over een periode van drie weken een volledig werkende applicatie in elkaar te steken die aan al onze vereisten, en meer, voldeed.”
Voordelen
De snelle development flow is voor Van Looveren één van de voornaamste redenen dat hij met Flutter aan de slag is gegaan. Een aanpassing in de code kan worden bewaard en dankzij hot reload onmiddellijk weergegeven in de applicatie. Dat laat toe om snel en eenvoudig te experimenteren met UI-elementen, functies toe te voegen en bugs op te lossen. “Veel native developers houden vaak vast aan die native development. Voor mij is het belangrijker om op een snelle en efficiënte manier goede applicaties te kunnen bouwen. De technologie is voor mij van minder belang”, besluit Van Looveren.
Een groot verschil met andere cross-platform toolkits, zoals React Native, is dat Flutter de UI-widgets van een platform nabouwt en beheert in het framework, in plaats van de widgets/views van Android of iOS zelf te gebruiken om een UI op te bouwen. De widgets van Flutter bevatten alle kritieke platformverschillen, zoals scrollen, navigatie, pictogrammen en lettertypen, waardoor apps er altijd mooi en consistent uitzien over platformen en apparaten heen. “Als Apple een restyling van iOS doet, zal een Flutter-app er meteen op alle iPhones hetzelfde uitzien. Met React Native ziet de app er verschillend uit in verschillende versies van iOS”, geeft Van Looveren als voorbeeld.
De Flutter-code wordt bovendien naar native ARM-machinecode gecompileerd via de native compilers van Dart, waardoor de prestaties in principe die van een native applicatie benaderen. Bij React Native wordt daarentegen een JavaScript-bridge gebruikt, wat in verhouding de prestaties negatief beïnvloedt. Bovenstaande schema’s illustreren het verschil in architectuur tussen Flutter en React Native.
Flutter of niet
Van Looveren is op basis van de eerste proof-of-concept die icapps bouwde alvast overtuigd van de technologie achter Flutter, en ook klant KBC was onder de indruk.
Een Flutter-app kan alles wat een native app kan, maar dat betekent nog niet dat het altijd de juiste keuze is. “Wanneer een applicatie veel native elementen gebruikt, is het wellicht nog altijd beter om een native app te schrijven”, denkt Van Looveren. “Anders ben je heel lang bezig met alles te integreren. We zullen onze klanten daarom nooit automatisch aanbevelen om Flutter te gebruiken, maar gaan op zoek naar de beste oplossing voor elke specifieke applicatie.”
Verschillende applicaties hebben verschillende noden en dat leidt tot verschillende keuzes in technologieën.
Verschillende applicaties hebben verschillende noden en dat leidt tot verschillende keuzes in technologieën, stelt Van Looveren. Een goed voorbeeld van een typische use-case voor Flutter, zijn Googles eigen Stadia-apps. Stadia is de gamestreamingdienst die Google recent lanceerde en op zoveel mogelijk verschillende schermen beschikbaar wordt gemaakt. Ook de Google Assistant, Sonos en Philips Hue zijn bekende voorbeelden van toepassingen die vandaag al Flutter gebruiken.
Icapps merkt ook bij zijn eigen klanten dat er interesse is, maar sommige onder hen vinden het nog te vroeg omdat er – zeker in België – nog maar weinig ontwikkelaars zich in Flutter hebben gespecialiseerd. Omdat de community nog zo klein is, is troubleshooten moeilijker en bestaat de vrees dat een snelle ondersteuning niet gegarandeerd is bij problemen.
In de technologiewereld is de regel sinds jaar en dag erg vaak the winner takes all, of toch bijna all. VHS won van Betamax, Windows groeide uit tot het dominante besturingssysteem op desktops en laptops, en Android moest op mobiel uiteindelijk alleen nog Apples iOS naast zich dulden. Eén technologie neemt meestal de bovenhand en dat is daarom niet altijd degene die technisch het meest vernuftig is.
Met de brede schouders van Google onder het project en een duidelijk ambitie om hét ontwikkelplatform voor ambient computing te worden, lijkt de toekomst van Flutter voor cross-platform development verzekerd, maar het succes van de toolkit hangt volledig af van de adoptie door ontwikkelaars. De tijd zal het uitwijzen.
Lees ook: Hoe tevreden zijn Belgische developers en wat zijn hun favoriete tools? Op basis van data van Stack Overflow schenen we aan de start van dit jaar een licht op het Belgische ontwikkelaarslandschap.