Flutter (software)
Flutter | ||||
---|---|---|---|---|
![]() | ||||
Ontwerper(s) | ||||
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) ![]() | |||
Geschreven in | Dart, C++, C | |||
Categorie | Software development kit, UI-framework | |||
Licentie(s) | New BSD License | |||
Versiebeheer | Officiële broncode | |||
Website | flutter | |||
|
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]
Architectuur
[bewerken | brontekst bewerken]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.
Hot Reload
[bewerken | brontekst bewerken]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]
Ecosysteem
[bewerken | brontekst bewerken]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.
Externe link
[bewerken | brontekst bewerken]- ↑ Release v0.0.6: Rev alpha branch version to 0.0.6. GitHub. Gearchiveerd op 5 februari 2019. Geraadpleegd op 8 augustus 2022.
- ↑ Multi-platform for the win. flutter.dev. Geraadpleegd op 8 juli 2025.
- ↑ (en) 10 years in the making: How Flutter became the cornerstone of cross-platform development. Medium (12 januari 2025). Geraadpleegd op 8 juli 2025.
- ↑ (en) Here are the new features of Flutter 3.0 Google I/O Edition!. Esokia. Geraadpleegd op 8 juli 2025.
- ↑ (en) Architectural overview. flutter.dev. Geraadpleegd op 8 juli 2025.
- ↑ (en) Hot reload. flutter.dev. Geraadpleegd op 8 juli 2025.
- ↑ (en) Impeller rendering engine. flutter.dev. Geraadpleegd op 8 juli 2025.
- ↑ (en) Ecosystem. flutter.dev. Geraadpleegd op 8 juli 2025.
- ↑ (en) How to use Flutter platform channels: expert guide. DECODE (29 mei 2024). Geraadpleegd op 8 juli 2025.
- ↑ (en) Showcase - Flutter apps in production. flutter.dev. Geraadpleegd op 8 juli 2025.