Hoe is het om Flutter te leren als iOS developer?

Het is niet de eerste keer dat je hier iets leest over Flutter – en dat heeft een reden. Onze mobile developers zijn namelijk fan van Flutter en willen hun enthousiasme graag overbrengen aan zoveel mogelijk geïnteresseerden. En dat enthousiasme is op meer dan alleen schone code gebaseerd – wij vinden onze fandom echt niet zomaar uit. Onze Flutter experts Yannick en Eliot schreven eerder al waarom zij nu specifiek kiezen voor Flutter.

In deze blog gaan we de praktische kant op: hoe leer je Flutter als je een iOS developer bent? Eliot neemt je mee in zijn proces!

Tekst: Eliot Colinet, Mobile Product Lead bij RMDY

Iets nieuw leren is voor iedereen natuurlijk anders, dus ik geef graag eerst wat meer info over mezelf: ik ben sinds 2016 mobile developer met 100% focus op iOS development tot ik een jaar geleden startte met Flutter (in 2021, nvdr.). Als iOS developer heb ik meteen Swift geleerd en nooit Objective-C gebruikt. In professionele applicaties heb ik enkel UIKit gebruikt en nooit het nieuwere SwiftUI.

Starten met Flutter

Starten met Flutter vond ik oprecht leuk om te doen. Naast mijn leergierigheid die werd gevoed, ontdekte ik enkele zaken die ik bij iOS development niet ter beschikking had of aangenamer vond:

  • Als iOS developer ben ik het gewoon dat het wel even duurt tot mijn code gecompileerd is en ik mijn aanpassingen kan uittesten. Dankzij hot reloading (zie eerder artikel) kan je bij Flutter in een fractie van de tijd je aanpassingen zien verschijnen op het scherm. Dat is enorm motiverend om te zien! Vooral wanneer je nog kleine dingen aan het leren bent zoals simpelweg de kleur van iets aanpassen.
  • Zowel bij Flutter als bij UIKit kan je werken met componenten zoals tekstvelden, buttons, popups, .. Bij Flutter heb je echter meer keuze en kan je de componenten eenvoudiger aanpassen en stylen. Dat zorgt ervoor dat je heel snel en eenvoudig heel wat leuke dingen op het scherm kan toveren. En wie ziet er nu niet graag snel zijn werk op het scherm?
  • De documentatie van Flutter is zeer eenvoudig en veel beter dan die van Apple. De Flutter documentatie bevat zelfs voorbeelden die je in je browser kan testen en aanpassen! En als je geen zin hebt om te lezen zijn er ook filmpjes die de componenten kort en bondig duidelijk uitleggen. Degelijke documentatie is één van de voornaamste redenen dat je vlot van start kan gaan.
  • Als beginner is het geweldig om met een druk op de knop te zien dat je zowel een iOS als een Android app kan maken. Het voelt een beetje aan als valsspelen of alsof je een superkracht hebt. Je krijgt 2 apps voor voor de “prijs” van 1.

Meer technische aspecten (Pro Flutter)

Bij het schrijven van code in een applicatie kom je al snel dingen tegen die wat tijd nemen. Denk maar aan het inladen van foto’s op Instagram of tweets op Twitter. Maar ook minder voor de hand liggende dingen zoals complexe berekeningen nemen soms iets meer tijd in beslag.

Asynchrone code

Om ervoor te zorgen dat je applicatie niet moet blijven wachten, werken we met asynchrone code. Er bestaan meerdere manieren om hiermee om te gaan.

  • Bij Swift gebruik je voornamelijk callbacks, dat wil zeggen dat een actie extra code bevat die pas zal worden uitgevoerd wanneer de actie klaar is (je weet niet wanneer dit zal zijn).
  • Bij Dart heb ik async/await leren gebruiken. Dit zorgt ervoor dat je je lijnen code gewoon opeenvolgend onder elkaar kan blijven schrijven, maar dat de volgende lijnen pas zullen worden uitgevoerd wanneer de actie klaar is. Dat maakt de code in vele gevallen eenvoudiger en heel aangenaam om te gebruiken.

Package manager

Zowel voor iOS als voor Flutter zijn er uiteraard open source libraries geschreven door andere developers om bepaalde features makkelijk in je app te integreren. De manier waarop je deze packages in je app kan integreren is aan de hand van een package manager. Binnen de iOS community heerst er hierrond echter verdeeldheid. Zo kan je Cocoapods, Carthage of SPM (Swift Package Manager) gebruiken. Als iOS developer heb ik ze alle drie voor projecten gebruikt en die hebben elk hun voor- en nadelen.

Maar bij Dart/Flutter is er een duidelijke keuze, namelijk pub.dev. Deze manier verloopt zeer vlot en ik heb er persoonlijk nog maar zelden issues mee gehad in vergelijking met de package managers voor iOS.

Meer technische aspecten (Pro iOS)

Styling van componenten

Een grote ergernis die ik heb bij Flutter is de manier waarop je componenten moet stylen. Bij UIKit (voor iOS) is dat intuïtief, consistent en makkelijk. Je kan gemakkelijk de backgroundColor, font, cornerRadius en meer aanpassen op de component zelf. Bij Flutter heb je het concept van decoration, styling, themes, … Het voelt aan alsof je altijd wel een andere manier nodig hebt om een eenvoudige aanpassing te doen. Ik moet nog steeds elke keer opzoeken hoe ik de hoeken van een Container moet afronden in Flutter. Dat komt omdat de styling enorm veel mogelijkheden aanbiedt, maar ik hoop toch op een vereenvoudiging hiervan.

State management

Een grote stap die je moet zetten bij het leren van Flutter is kiezen hoe je in je code het best met je state management zal omgaan. Dit is van groot belang binnen Flutter, dat volledig rond die state draait. Flutter ‘hertekent’ je scherm bij elke aanpassing van de state. Dat is niet het geval en volledig anders bij UIKit (iOS). Je moet dus al snel kiezen tussen Provider, Bloc, Riverpod of andere manieren die de Flutter community bedacht heeft om goed met je state management om te gaan. Dat je zo snel zo’n belangrijke stap moet zetten is in mijn ogen het grootste obstakel om Flutter te leren.

Mijn liefde voor Swift

Flutter is voor mij enorm belangrijk geworden in zeer korte tijd. Ik geloof er enorm in en wil er nog zo veel mogelijk tijd en moeite in steken om het beter en beter te kunnen. Maar één ding kan ik toch niet loslaten: mijn liefde voor de programmeertaal Swift is en blijft zeer groot. Ik zou gerust – met wat extra moeite – een hele spreekbeurt kunnen doen over waarom ik Swift zo geweldig vind en waarom ik het boven de Flutter-taal Dart verkies. De syntax, het gebruiksgemak en code-optimalisatie mis ik nog dagelijks wanneer ik Dart/Flutter code schrijf.

Al neemt dat niet weg dat je mij het komende jaar waarschijnlijk heel veel Dart code zal zien schrijven en heel weinig Swift.

Give it a try!

Ben jij iOS developer en heb je er al van gedroomd om je app ook op de Google Play Store te kunnen aanbieden? Geef Flutter dan zeker een kans, je zal het je niet beklagen! Als je bovendien al ervaring hebt met SwiftUI zal het al een heel stuk makkelijker zijn om Flutter te leren vanwege de manier waarop de code en de UI wordt opgebouwd. Je kan heel eenvoudig van start gaan met de documentatie dat ze bij Flutter speciaal voor iOS developers hebben geschreven: Flutter for iOS developers.

Have fun!

Volgende keer neemt Yannick Van Godsenhoven ons mee in zijn ervaring als Android developer die Flutter leert!

Stuur ons een mailtje en
let’s talk

RMDY NV
Veldkant 35A
2550 Kontich

T: +32 3 450 86 42
E: info@rmdy.be