Flutter is een open source, cross-platform UI toolkit gebaseerd op Dart en ontwikkeld door Google. Het doel van de kit is om het ontwikkelen van apps te versnellen: doordat Dart de code omzet naar native code voor zowel Android als iOS. Het scheelt dus een bak ontwikkelwerk vergeleken met het bouwen van dezelfde app in Kotlin (android) én Swift (iOS).
Hoewel de eerste release pas van eind 2018 dateert, is Flutter één van de snelst groeiende toolkits van de afgelopen tijd – zelfs ten opzichte van andere cross-platform oplossingen als Xamarin en React Native (check de Google trends grafiek hieronder maar eens!). Hoog tijd dus om Flutter eens nader te onderzoeken en te kijken naar de voor en nadelen van het platform. Met een korte enquête hebben we ook jullie mening gevraagd over flutter.
Ook jullie zijn al volop bezig met het ontdekken van Flutter, maar liefst 87,5% geeft in onze enquête aan wel eens met Flutter te hebben geëxperimenteerd:
67.5% geeft zelfs aan de ze bij hun huidige werkgever al in mee rof mindere mate met Flutter bezig zijn:
Voordelen en nadelen Flutter
Het is niet zo gek dat Flutter aan populariteit wint: je kunt met een klein team al snel een volwaardige app lanceren op verschillende platformen (Flutter werkt naast Android en iOS namelijk ook op macOS, Linux, Windows, web browsers als Firefox en Chrome, en zelfs auto’s of smart TV’s behoren tot de mogelijkheden.
Daarnaast biedt Flutter ook een scala aan handige tools voor developers zoals een hot-reload functie waarmee een aanpassing in de code onmiddellijk zichtbaar wordt in de app. Ook is Dart een ‘performative’ taal: apps zijn zeer snel en wint het op dat gebied van bijvoorbeeld Java en Javascript.
Een ander groot voordeel van Flutter is dat alles open source is. Ondanks dat Flutter relatief nieuw is er een volwaardige set aan widgets beschikbaar. Bovendien gebruikt Flutter geen native widgets, Flutter tekent alles zelf. Als Flutter ontwikkelaar heb je zo dus alle pixels op het scherm tot je beschikking, zodat je veel vrijheid hebt in het ontwikkelen van je app.
Third-Party Libraries
Een van de respondenten plaatste een kanttekening dat third-party libraries nog beperkt zijn en dat een ecosysteem als React Native natuurlijk over veel meer ondersteuning en libraries beschikt, simpelweg omdat het al langer bestaat. Johan Pelgrim, oprichter van de Flutter Netherlands meetup groep vind dat wel meevallen: "Er zijn nu al duizenden open source libraries beschikbaar. Voor de meest gangbare functionaliteit zijn er prima, goed onderhouden plugins en packages te vinden. En als je iets nodig hebt wat nog niet beschikbaar, maar waarvan je wel weet dat het in native Android en iOS te bouwen is dan kun je er vrij makkelijk zelf een plugin voor schrijven en het op die manier beschikbaar maken in je Flutter apps. Als je een beetje terug wilt geven aan de community maak je er natuurlijk een open source plugin van en maak je het voor een ander weer makkelijker om zijn of haar Flutter app te bouwen".
De respondenten zijn over het algemeen wel zeer positief over de mogelijkheden van Flutter, maar onderschrijven ook dat er nog valkuilen zijn:
“Voordelen zijn de gemakkelijke manier om pixel perfect performante designs te implementeren en de zeer goed werkende hot reload. Nadelen zijn dat je veel gebruik moet maken van libraries/packages omdat flutter zelf vooral de 'native functionaliteiten' als camera, file systeem etc. niet support en je zult 'netjes' moeten programmeren anders verlies je snel het overzicht door de grote stukken widget code.”
Een andere respondent schrijft:
“Het grootste voordeel is dat cross-platform ontwikkeling gewoon werkt EN je nog steeds een goede performance van de app hebt (bij andere oplossingen was het altijd trager). Daarnaast is het heel simpel om met Flutter een mooie UI te bouwen die je ook nog een keer fancy kan animeren.
Het enige nadeel dat ik zie kleeft aan de Dart programmeertaal. Deze is op sommige gebieden nog niet zo krachtig als bijvoorbeeld Kotlin of Swift dat zijn, maar er worden wel goede stappen gemaakt! Dus die nadeeltjes worden ook steeds kleiner.”
'Nog in ontwikkeling'
Niet iedereen is echter zo positief:
“De programmeertaal Dart is nog in ontwikkeling en dat betekent dat je soms een bestaand project om moet bouwen wat onverwachts veel extra tijd kost. State management is niet goed doordacht en dat leidt al snel tot een verkeerd patroon. Zo is MVVM niet zonder externe libraries eenvoudig te realiseren.”
Johan Pelgrim: "Flutter en Dart zijn natuurlijk de hamer en spijkers waarmee je jouw product bouwt. Software ontwikkeling blijft een vak. Flutter is geen wondermiddel waarmee je zonder enige ervaring iets in elkaar kunt flansen. Dat kan natuurlijk wel, tot op zekere hoogte, maar als je goed onderhoudbare code wilt schrijven met een gedegen architectuur waarbij de business logica en UI/UX met geautomatiseerde tests wordt gevalideerd, is dat prima te doen met Dart en flutter".
Flutter in de praktijk
Het was onze verwachting dat bedrijven die al met Flutter werken, voornamelijk de kleinere bedrijven zouden zijn. Het is namelijk een handige tool om een app op meerdere platformen te kunnen publiceren zonder dat je twee specialistische teams nodig hebt. Echter, dit blijkt niet uit de antwoorden van onze respondenten. Het gebruik van Flutter is redelijk verdeeld over allerlei groottes.
Het lijkt er dan ook op dat Flutter in zeer korte tijd een plekje heeft veroverd tussen de meer gevestigde tools. Op de vraag of ze het aan zouden durven bij hun huidige werkgever een Flutter project te starten op een kritisch tijdpad antwoord 62% (!) dat ze dit zouden durven of zelfs al doen.
Snel, cross-platform, open-source en steeds meer omarmd door de community (en belangrijker: grote bedrijven): Flutter (en dus Dart) is here to stay!
Beluister de hele flutter podcast (spotify) die we met Johan Pelgrim hebben opgenomen waarin we dieper in gaan op alles wat met Flutter en Dart te maken heeft. Nog meer luisteren? check dan onze playlist op spotify.