Flutter ist ein von Google entwickeltes Cross-Plattform-Framework zur Entwicklung von mobilen, Web-, und mittlerweile auch Desktop-Applikationen. Es ist quelloffen und wird seit dem initialen Alpha-Release im Mai 2017 (v0.0.6) auf GitHub von einem dedizierten Flutter Team, bestehend aus Google-Entwicklern und der Community, stetig weiterentwickelt.
Mittlerweile hat die Technologie schon einiges an Aufsehen erregt:
- Das Flutter GitHub Repo ist bereits auf Platz 19 der am meisten mit Stern versehenen GitHub Repos. (Stand 10.2019)
- Viele mit Flutter entwickelte Apps weisen eine Kombination aus mehr als 500.000 Downloads und einer minimalen Bewertung von 4/5 Sternen auf. Einige große Marken nutzen Flutter zur Entwicklung ihrer Apps. Auf der Flutter Homepage sind noch mehr zu sehen.
- Aktuell überholt Flutter das bisher wohl am meisten etablierte Cross-Plattform-Framework React Native an Stack Overflow Traffic.

Das Flutter-Framework verspricht folgende Vorzüge:
- schnelle Entwicklungszyklen durch einen zustandssicheren Hot-Reload und einem breiten Spektrum an vorgefertigten und anpassbaren Komponenten
- ausdrucksstarke UI durch bereits integrierte Material Design- und Cupertino-Elemente
- nativer Eindruck durch Adaption kritischer Plattform-Unterschiede wie Scrolling, Navigation, Icons und Schriftarten
Durch die Programmiersprache Dart wird ein sogenannter Hot-Reload ermöglicht. So kann sowohl just-in-time (JIT), als auch ahead-of-time (AOT) kompiliert werden. Somit können Release Builds stabil durch AOT gebaut werden, während die App beim Debuggen JIT kompiliert wird – ein HotReload dauert hierbei wenige hundert Millisekunden.
Folglich lässt sich Dart typsicher mit statischen Datentypen oder auch dynamisch entwickeln. Die Sprache ist objektorientiert und ähnelt von der Syntax her Sprachen wie Scala.
Die Flutter-Architektur

Flutter besteht im Kern aus dem Dart-Framework und einer Rendering Engine, welche auf dem jeweiligen Host-Betriebssystem durch einen Embedder verwaltet werden. Der Embedder bewirkt, dass Flutter unter der Haube zu nativen Android- bzw. iOS-Code kompiliert wird und somit performance-mäßig mit nativ implementierten Apps gleichzieht.
Die Bibliotheken
Das Dart-Framework stellt neben regulären Dart-Bibliotheken auch die dart:ui Bibliothek bereit. Diese beinhaltet sogenannte Widgets, mit denen herkömmliche Android- und iOS-UI-Elemente abgebildet werden können.
Die Grafik-Engine
Ein Vorteil, der Flutter von anderen gängigen Cross-Platform-Frameworks abhebt, ist, dass Flutter Kontrolle über jeden Pixel hat, der gerendert wird. (Andere Frameworks wie beispielsweise Xamarin und React Native sind für das Rendern vom jeweiligen Betriebssystem abhängig.)
Ermöglicht wird das durch die zugrunde liegende Grafik-Engine Skia, die nicht die OS-spezifischen UI-Komponenten verwendet, sondern pixel-genaue Abbilder dieser rendert.
Somit bleibt dem Entwickler selbst die Wahl, ob eine App auf beiden Plattformen identisch sein soll, oder plattformspezifisches Aussehen und Verhalten mit sich bringen soll, wie beispielsweise Cupertino Widgets und ein eigenes „Zieh“-Verhalten bei Listen unter iOS-Geräten.
Die Flutter-Engine ist auf geringe Latenz und hohe Bildraten optimiert. Die Engine ist laut Google in der Lage, eine Bildschirmfrequenz von 120Hz generieren. Da der Großteil der heutigen Smartphones allerdings 60Hz-Displays besitzt, ist der Standard-Output von Flutter auf 60 Bilder pro Sekunde begrenzt.
Plattformspezifischer Code
Für den Fall, dass neuere OS-spezifische APIs oder Frameworks noch nicht von Flutter adaptiert worden sind, bietet Flutter jederzeit die Möglichkeit, plattformspezifischen Code einzubinden, entweder direkt oder als Plugin. Ebenso ist es möglich, eine bereits bestehende Android- oder iOS-App mit Flutter-Komponenten zu erweitern. Durch diesen Ansatz wird die Engine umgangen.

Unsere bisherige Erfahrung mit Flutter
Nachdem wir nun schon einiges an Erfahrung mit der Technologie sammeln konnten, sind hier unsere bisherigen Erfahrungen:
- Mit ein wenig Übung geht das Erstellen von UI wahnsinnig schnell.
- Trotz übergreifender Codebase benötigt man minimales Android-/iOS-Wissen, weil manche Funktionalitäten wie z.B. eine Firebase-Anbindung nativ in dem Android-/iOS-Ordner der Flutter-Projektstruktur umgesetzt werden. Meist bedeutet das allerdings nur Anpassungen in z.B. der AndroidManifest-Datei.
- Durch den Hot-Reload erlangt man sehr schnelle Entwicklungszyklen. Man kann oft stundenlang an der App programmieren, ohne sie neu starten zu müssen. Ein Neustart muss im Prinzip nur erfolgen, wenn man an den Abhängigkeiten der App Änderungen vornimmt.
Wir haben übrigens im Blogbeitrag „Entwickeln mit Flutter“ beschrieben, wie Du am besten anfängst und dort noch weitere Tipps und Tricks gesammelt.
Flutter als Cross-Plattform-Werkzeug
Wie oben bereits erwähnt wird Flutter bereits für den Einsatz außerhalb der App-Entwicklung vorbereitet. Das Framework erweitert seinen Fokus nun auch auf die Entwicklung von Web- und Desktop- bis hin zu Embedded-Anwendungen, das verkündete Google bereits im Mai 2019 in einem Blogbeitrag zu Flutter. In Zukunft wird Flutter also noch weiterwachsen. Wir können gespannt bleiben, wie Google Flutter weiter ausbauen wird!
Feedback