Dette blogginnlegget er skrevet for deg som skal ta en avgjørelse på valg av teknologi til ditt neste app-prosjekt. Bloggposten beskriver hva Flutter er, hvorfor det er det mest effektive kryss-plattform rammeverket som finnes i dag, samt fordeler med Flutter sammenliknet med andre kryssplattform løsninger.
Flutter er en app og utviklingsplattform (også kalt SDK-Software Development Kit) basert på på åpen kildekode. Google startet arbeidet med Flutter allerede i 2015, men den offisielle lanseringen, med versjon 1.0, kom først sent i 2018. Noe av grunnen til at Flutter er så populær, er at den er laget av Google, noe som bidrar til å gi Flutter svært høy kredibilitet.
I dag er plattformen moden, den har ristet av seg barnesykdommene og er klar til å benyttes for å utvikle store apper. Den kan brukes til å lage apper som f.eks. sosiale nettverk, helse-apper, apper for shopping, underholdning, opplæring, livsstil, business-apper etc. I bunn og grunn stort sett hva som helst.
I Flutter er det enkelt å tilpasse utseende og oppførsel til komponentene slik at de ser ut- og oppfører seg nøyaktig slik designeren har bestemt. Plattformen er også veldig sterk på dynamisk oppførsel, slik at vi får et levende, dynamisk brukergrensesnitt som er forventet av moderne apper i dag. Bevegelse er en viktig del av moderne appdesign, og med Flytter trenger man ikke begrense seg som designer for å tilpasse seg hva som er gjennomførtbart. Dette, siden "alt" er mulig med Flutter, samtidig som det går raskt å utvikle.
I Knowit har vi fokus på rike brukergrensesnitt. Med Flutter blir appene vi lager, på en enkel måte, rike og dynamiske, slik at våre kunder får det de forventer av en moderne app.
I Flutter er alt widgets som utgjør brikkene til appens brukergrensesnitt. Det finner et massivt antall ferdiglagde brukergrensesnitt-widgets som gjør at man, som utvikler, raskt finner det man trenger, også når man utvikler avanserte skjermbilder. Det finnes i tillegg et stort antall ekstra komponenter til nedlasting. De innebygde widgets er intuitive å jobbe med, og er enkle å tilpasse.
Dersom man ikke finner det man trenger innebygd i Flutter, kan man hente ned ekstra pakker. Det finnes nesten 13 000 pakker for nedlastning, og dette antallet er raskt voksende. En trenger med andre ord ikke lete langt for å finne det man trenger. Eksempler på pakker kan være nye komponenter til brukergrensesnitt eller tilgang til biometri (fingeravtrykk og face-ID), caching av data lokalt, lokasjonstjenester eller lokal database. Pakkene støtter som regel både Android og iOS, slik at man ikke trenger å tenke på om man kjører på den ene eller andre plattformen. I tillegg har mange av pakkene også web-støtte.
Dersom man skulle ha behov for native funksjonalitet som det ikke finnes en pakker for, noe som forøvrig er svært usannsynlig, er det en lett jobb å lage en pakke selv. Dette vil være spesielt enkelt å lage for erfarne native plattform utviklere.
En viktig del av brukeropplevelsen til enhver app er hastighet. Brukere forventer rett og slett at en app starter og kjører raskt. Google har derfor hatt et høyt fokus på hastigheten til appene som blir laget når de utviklet Flutter. Tradisjonelt har man bygget appen ved å bruke Apple og Google sine egne verktøy i mobilens eget programmeringsspråk. Dette kalles native utvikling og er regnet som den dyreste måten å lage apper på, men også den måten som gir aller best ytelse. Med Flutter får man nær native hastighet siden applikasjoner er bygget direkte til ARM maskinkode ved å benytte Dart sin native kompilator. Dette eliminerer vanlige feil som kan oppstå i andre kryssplattform-verktøy. Ved release-bygg kompileres appen som AOT (Ahead of time) til native kode, både på iOS og Android. Dette gir svært høy native ytelse. Den bruker ikke Javascript bro slik som f.eks. ReactNative gjør, og vil derfor starte og kjøre mye raskere enn React Native.
Med andre kryssplattform-verktøy trenger man ofte eksperter for å få god ytelse. Med Flutter trenger man ikke å gjøre tilpasninger for å få god ytelse, siden ytelsen kommer av seg selv. Apper som er laget med Flutter starter og kjører veldig raskt.
Programmeringsspråket som utviklerne benytter i Flutter heter Dart, og er i seg selv et raskt, objekt-orientert, rikt programmeringsspråk. Det likner veldig på C# og Java, er lett å lære, samtidig som det er kraftig. Man bruker samme programmeringsspråk for alle plattformer.
Når Google startet med Flutter, begynte de med Android utvikling og gikk deretter videre med iOS utvikling. For ikke lenge siden begynte Flutter også å støtte web og desktop. Her er Flutter virkelig overlegen andre kryss-plattform-verktøy. Man kan kjøre på alle plattformene fra én enkel kodebase. Man trenger ikke lage kode for å takle de ulike operativ-systemene og plattformene.
Tradisjonelt sett har man måttet skrive web sider i JavaScript. Her kan Dart kompileres om til svært effektiv JavaScript, og kan derfor også kjøres på web direkte. Det er ikke nødvendig å modifisere koden for web, men det kan gjøres om man vil ha annen oppførsel på web enn på mobil. Siden Flutter benytter standard JavaScript, støttes alle vanlige web-browsere.
Flutter vil også støtte Windows desktop, MacOS desktop og Linux med høy ytelse. Dette betyr at dersom en utvikler kan lage app for iOS, kan denne personen plutselig også lage app for Android, Web, Windows desktop, MacOS og Linux. Dette reduserer kravet til antall utviklere og vil redusere kostnadene betraktelig dersom man skal støtte flere plattformer.
Flutter har en egen renderer-motor for opptegning av skjermen. Dette gjør at brukergrensesnittet i utgangspunktet ser eksakt likt ut på iOS og Android. Utviklere trenger ikke lenger bruke tid på å passe på at oppførsel på iOS og Android virker. Dette er noe man tradisjonelt sett bruker mye tid på i andre kryss-plattform-verktøy. Det betyr, i det store og hele at om det virker på iOS, så virker det på Android. Dette sparer utviklere for mye tid. Men det betyr ikke at brukergrensesnittet trenger å se likt ut i iOS og Android. En kan lage egne komponenter som ser og oppfører seg ulikt på de ulike plattformene, slik at brukere får den oppførsel de er vant til på sin plattform. Gode eksempler på dette er for eksempel tab bar og switch/checkbokser som pleier å ha forskjellig oppførsel på iOS og Android. Brukeren kan dermed få en app som benytter kjente brukergrensesnitt-elementer for hver av mobilplattformene, slik at brukerne av appene føler seg hjemme.
Flutter bruker en grafisk motor som heter Skia for å tegne alt man ser i appene. Dette gjør at appen vil se helt lik ut på begge plattformer, uten behov for å justere på hver av plattformene. I tillegg vil appen få høy ytelse, da det ikke finnes noe mellomlag som må oversette koden til nativ plattform kode for å tegne brukergrensesnittet. Utviklerne slipper å individuelle tilpasninger på de ulike plattformene for å få komponenter til å virke alle steder, noe som reduserer time-to-marked.
Flutter har også en veldig godt utviklet Hot Reload. Når man utvikler, benyttes Just-in-time kompilering som gjør at man kan benytte hot-reload og rask-restart. Dette betyr at utviklerne ikke trenger å kjøre appen på nytt etter hver endring. Endringene blir vist i appen forløpende mens man lagrer endringene, noe som er svært tidsbesparende.
En av de største fordelene med Flutter, er at man kun trenger å ha et eneste team for både iOS, Android og ev. Web. Dette gjør at man kan komme raskere ut i markedet, i tillegg til at man reduserer kostandene betraktelig. Et mindre utviklings-team kan utvikle apper som ser og føles bra ut med native ytelse, noe som gir samme brukeropplevelse på både iOS og Android, men vesentlig raskere enn tidligere.
Flutter er helt gratis å bruke. Det er ingen lisenskostnader i motsetning til f.eks. Xamarin.
Flutter har en robust og raskt voksende community. Dette, takket være populariteten Flutter har rundt omkring i hele verden. Der man ser at både utviklere og kunder har vært skeptiske til verktøy som f.eks. Xamarin, er det stor ettterspørsel og interesse for Flutter blant både utviklere og kunder.
Flutter støtter alt man forventer av et modent apputviklings-verktøy. Den har f.eks. støtte for flerspråklighet, caching av data og dynamisk oppførsel (bevegelse) i tillegg til alt annet man kan trenge.
Eksisterende native mobil-apper kan integrere Flutter del for del. De fleste større selskaper går over til flutter på denne måten ved at de, over tid, erstatter en og en del av sine eksisterende apper med deler laget i Flutter.
Når man skal lage større apper i Flutter er det viktig å ha riktig struktur i prosjektet og skille presentasjon og logikk. I Knowit har vi spesielt fokus på arkitektur og struktur for å kunne skalere og lage større apper med Flutter.
For mange kunder er Flutter et enkelt valg. Man slipper å ha et eget team for iOS og et for Android. I tillegg kan man enkelt få en web-versjon av en del, eller hele appen, om det er ønskelig. Mindre kode gir mindre rom for feil, og er også rimeligere å rette feil i.
Knowit har brukt Flutter i prosjekter for flere store kunder og har enda flere som planlegger å lage nye apper med Flutter, samt også kunder som planlegger å skrive om eksisterende apper til Flutter.
Utviklere i Knowit som har jobbet med Flutter, sier de ikke kommer til å gå tilbake til annen måte å lage apper på. Dette viser hvor lett det er å bli glad i denne måten å lage apper på. Dette og de andre fordelene vi har skissert i denne bloggposten er årsaken til at vi satser på Flutter her i Knowit.
Ved å velge Flutter, så er det spesielt kundene som sitter igjen som den store vinneren, ved at de får en rik og brukervennlig app på rekordtid, og til langt lavere kost enn ved bruk av andre verktøy. Google er en tungvekter av en leverandør som satser stort på Flutter. Med Flutter har de tenkt helt riktig og valgt gode, moderne, løsninger hele veien.
Ønsker du å vurdere en ev. overgang til Flutter, eller har ytterligere spørsmål?
Ta kontakt med oss her!
Du kan også lese mer Knowit Experience ved å klikke her.
Are Refsdal
are.refsdal@knowit.no