Naar inhoud springen

Flutter (software)

Uit Wikipedia, de vrije encyclopedie
Flutter
Logo
Ontwerper(s) Google
Ontwikkelaar(s) Google en de Flutter-gemeenschap
Uitgebracht Alpha (v0.0.6) / mei 2017 (8 jaar)[1]
Recentste versie 3.32.5 
(3.32.5)
Recentste bètaversie 0.0.6 (11 mei 2017) Bewerken op Wikidata
Geschreven in Dart, C++, C
Categorie Software development kit, UI-framework
Licentie(s) New BSD License
Versiebeheer Officiële broncode
Website flutter.dev
Portaal  Portaalicoon   Informatica

Flutter is een opensource software development kit (SDK) en UI-framework ontwikkeld door Google. Het stelt ontwikkelaars in staat om vanuit één enkele codebase cross-platform-applicaties te ontwikkelen voor Android, iOS, Windows, macOS, Linux en het web.[2] Flutter staat bekend om zijn hoge prestaties en de mogelijkheid om visueel aantrekkelijke en consistente gebruikersinterfaces te bouwen.

Geschiedenis en evolutie

[bewerken | brontekst bewerken]

De ontwikkeling van Flutter begon binnen Google onder de codenaam "Sky". Het werd voor het eerst publiek gepresenteerd op de Dart Developer Summit in 2015. Het oorspronkelijke doel was een framework te creëren dat applicaties kon renderen met een constante snelheid van 120 frames per seconde, door direct op een eigen grafische engine te tekenen in plaats van de native UI-componenten van het besturingssysteem te gebruiken.[3]

  • Flutter 1.0 (december 2018): De eerste stabiele versie werd uitgebracht, gericht op het bouwen van Android- en iOS-applicaties.
  • Flutter 2.0 (maart 2021): Een belangrijke mijlpaal waarbij de focus verschoof van enkel mobiel naar een breder multi-platform-framework. Stabiele ondersteuning voor het web en beta-ondersteuning voor desktop (Windows, macOS, Linux) werden toegevoegd.
  • Flutter 3.0 (mei 2022): Met deze versie werd stabiele ondersteuning voor alle zes de platforms (mobiel, web en desktop) een feit. Dit maakte Flutter een van de eerste frameworks die een dergelijke brede, stabiele cross-platform ondersteuning bood vanuit één codebase.[4]

De architectuur van Flutter is opgebouwd uit lagen, wat het flexibel en uitbreidbaar maakt. Elke laag bouwt voort op de vorige.[5]

  • Flutter Engine: De kern van Flutter is de engine, die voornamelijk in C++ is geschreven. Deze engine is verantwoordelijk voor de implementatie van de kern-API's van Flutter op laag niveau, waaronder de rendering-pipeline, tekst-layout, bestands- en netwerk-I/O, en de Dart runtime.
  • Rendering Pipeline: In tegenstelling tot veel andere frameworks, die de native UI-componenten van het besturingssysteem gebruiken, tekent Flutter zijn eigen interface. Het stuurt grafische commando's naar de grafische bibliotheek Skia (of de nieuwere engine Impeller), die vervolgens de interface rechtstreeks op een canvas op het scherm rendert. Dit geeft ontwikkelaars volledige controle over elke pixel en zorgt voor visuele consistentie over alle platforms.
  • Flutter Framework: Bovenop de engine bevindt zich het framework, geschreven in de programmeertaal Dart. Dit framework bevat een rijke set aan bibliotheken voor onder andere animaties, gestures, en de basis-widgets.
  • Widgets: Het centrale concept in Flutter is dat de gehele gebruikersinterface wordt opgebouwd uit widgets. Een widget is een onveranderlijke beschrijving van een deel van de interface. Tekst, knoppen, afbeeldingen, maar ook lay-out-elementen zoals rijen, kolommen en padding zijn allemaal widgets. De interface wordt gevormd door een boomstructuur van widgets (de "widget tree").
  • Material Design en Cupertino: Flutter biedt een uitgebreide set van voorgebouwde widgets die de visuele stijl van Google (Material Design) en Apple (Cupertino) implementeren. Hierdoor kunnen ontwikkelaars interfaces bouwen die er op zowel Android als iOS 'native' uitzien.

Een van de meest geprezen functies van Flutter is "Stateful Hot Reload". Deze functie stelt ontwikkelaars in staat wijzigingen in de broncode vrijwel onmiddellijk te zien in de draaiende applicatie, zonder dat de app opnieuw hoeft te worden opgestart. Dit versnelt het ontwikkelproces aanzienlijk, omdat de staat (state) van de applicatie behouden blijft. Hierdoor kan een ontwikkelaar een wijziging diep in de app doorvoeren en het resultaat direct zien, zonder door alle voorgaande schermen te hoeven navigeren.[6]

Impeller: rendering-engine van de volgende generatie

[bewerken | brontekst bewerken]

Om een veelvoorkomend prestatieprobleem, bekend als "jank" (haperingen), op te lossen dat soms optrad door het compileren van shaders tijdens runtime, heeft Google een nieuwe rendering-engine ontwikkeld genaamd Impeller. Impeller compileert alle benodigde shaders al tijdens het bouwproces van de app. Dit leidt tot meer voorspelbare en consistent vloeiende prestaties, met name bij complexe animaties. Sinds Flutter 3.16 is Impeller de standaard renderer op iOS en sinds versie 3.27 is het de standaard renderer voor iOS en Android.[7]

Flutter wordt ondersteund door een groeiend ecosysteem van tools en community-bijdragen.

  • Pub.dev: Dit is de officiële packagemanager voor Dart en Flutter. Ontwikkelaars kunnen hier duizenden opensourcepakketten en plug-ins vinden die functionaliteit toevoegen, van state management en netwerk-requests tot integratie met hardware-API's zoals de camera of gps.[8]
  • Flutter DevTools: Een suite van tools voor performance-analyse en debugging, die direct in de browser draait. Het biedt onder andere een widget inspector, een CPU-profiler en tools om geheugengebruik te analyseren.
  • Platform Channels: Hoewel Flutter zijn eigen UI rendert, kan het communiceren met native platform-API's via "platform channels". Dit stelt ontwikkelaars in staat om platform-specifieke functionaliteit te gebruiken, zoals toegang tot de batterijstatus, sensoren of native SDK's van derden.[9]

Gebruik in de praktijk

[bewerken | brontekst bewerken]

Flutter wordt door een breed scala aan bedrijven gebruikt, van startups tot grote multinationals. Enkele bekende voorbeelden van apps die met Flutter zijn gebouwd zijn:[10]

  • Google Pay: De mobiele betaalapp van Google.
  • BMW: De My BMW App, die bestuurders verbindt met hun voertuig.
  • Alibaba Group: Gebruikte Flutter voor hun Xianyu-app, een van China's grootste tweedehands marktplaatsen.
  • Philips Hue: De app voor het bedienen van de slimme verlichting.