Flutter: Ein Star kommt angeflattert

Flutter: Ein Star kommt angeflattert

Artikel erschienen in IT Magazine 2020/01

Dart als Programmiersprache

Mit dem vom SDK zur Verfügung gestellten Dart-Framework lassen sich gängige Anforderungen umsetzen (grüner Bereich). Bei Bedarf kann das Verhalten der Engine (blauer Bereich) und des Embedders angepasst werden, welche sich um die Ausführung von Flutter auf der jeweiligen Zielplattform kümmern (orangener Bereich).
(Quelle: Google)
Flutter setzt auf die eher unbekannte Programmiersprache Dart. Dart hat sich bei der Evaluation aufgrund verschiedener Kriterien, darunter Performanz und Flexibilität, gegenüber anderen Alternativen durchgesetzt. Die objektorientierte Programmiersprache wird, wie Flutter selbst, hauptsächlich von Google als Open-Source-Projekt entwickelt. Aktuell verfügbar ist Version 2.7.0. Dart-Code kann auf unterschiedliche Arten kompiliert werden. Für die Veröffentlichung von Apps wird der Code Ahead of Time (AOT) zu ARM- und x86-Artefakten umgewandelt, wodurch eine bestmögliche Ausführgeschwindigkeit erzielt wird. Während der Entwicklung wird der Code hingegen Just in Time (JIT) kompiliert und anschliessend von einer Dart Virtual Machine ausgeführt. Diese JIT-Kompilierung ermöglicht eine Kernfunktionalität von Flutter, das so genannte Stateful Hot Reload. Durch diese Funktion werden Änderungen am Quellcode in wenigen Millisekunden übernommen – ohne Neustart der App! Der aktuelle Zustand der Anwendung bleibt dabei erhalten. Wer sich an diesen Entwicklungskomfort einmal gewöhnt hat, wird ihn anschliessend bei anderen Produkten schmerzlich vermissen. Es finden sich sogar Berichte von Entwicklern, die ihre Arbeitsweise aufgrund der Funktion fundamental geändert haben wollen: vergleichbar mit einem Maler werden solange zusätzliche Elemente auf die Zeichenfläche gepinselt, bis das Ergebnis den eigenen Vorstellungen entspricht.
Eigene Erfahrungen und Berichte im Internet belegen, dass sich erfahrene Programmierer in Dart schnell zurecht finden. Die Dokumentation ist sinnvoll aufgebaut und umfassend, der Online-Editor Dartpad erlaubt erste Gehversuche direkt im Webbrowser. Für umfangreichere Experimente empfiehlt sich die lokale Installation des SDK. Dieses steht für Windows, Mac-OS und Linux zum Download zur Verfügung und enthält, neben den Flutter-Komponenten, alle benötigten Dart-Tools. Als Entwicklungsumgebung kann wahlweise Android Studio, IntelliJ oder Visual Studio Code verwendet werden, welche via Plug-in die Unterstützung für Dart und Flutter erhalten.


Übrigens wird Dart für jeglichen Code verwendet, auch für die Definition der grafischen Oberfläche. Dies wirkt im ersten Moment ungewohnt, hat aber den Vorteil, dass man sich als Entwickler auf eine Sprache konzentrieren kann. Einen grafischen Layout-Editor enthält übrigens keine der verfügbaren Entwicklungsumgebungen. Dank Hot Reloading wird diese Funktion jedoch nicht wirklich vermisst.

Gängige Anforderungen lassen sich problemlos mit dem vom SDK zur Verfügung gestellten Dart Framework umsetzen. Flutter ist sehr offen aufgebaut: bei Bedarf können viele Elemente angepasst werden, so auch das Verhalten der Engine und der Embedder, welche sich um die Ausführung von Flutter auf der jeweiligen Zielplattform kümmern (siehe Grafik).

Von besonderem Interesse sind die sogenannten Platform Channels. Über diese Schnittstelle können Nachrichten zwischen der Dart- und Plattform-Welt ausgetauscht werden. So lassen sich APIs des darunterliegenden Betriebssystems aufrufen oder native Bibliotheken einbinden. Zwecks Wiederverwendbarkeit lässt sich Code in Plug-ins auslagern und über eine öffentliche Datenbank mit anderen Entwicklern teilen.

Flutter in der Praxis

Der Einstieg in Flutter gestaltet sich aufgrund der bestens gepflegten Dokumentation einfach. Speziell hervorzuheben sind die verfügbaren Migration Tutorials: diese erläutern exemplarisch die wesentlichen Unterschiede von Flutter zu anderen Produkten und erleichtern so den Einstieg für erfahrene Mobile-Entwickler. Google selbst empfiehlt die Verwendung von Flutter für Teams, die innert kurzer Zeit neue, visuell ansehnliche Apps mit identischem Funktionsumfang für mehrere Plattformen entwickeln möchten. Explizit erwähnt wird auch der Einsatz als Prototyping-Tool, beispielsweise um Konzepte mit geringem Aufwand verifizieren zu können.

Die Flutter-Website listet einige Apps auf, welche mit dem SDK umgesetzt wurden. Darunter finden sich namhafte Einträge, beispielsweise für den neuen Cloud-Gaming-Dienst Stadia von Google oder das Smart Home System Hue von Philips. Es gibt also Firmen, welche Flutter bereits für kritische und langlebige Apps einsetzen. Dass sich das Tool für solche Anwendungsfälle anbietet zeigt sich auch darin, dass Flutter von Haus aus automatisierte Tests auf verschiedenen Stufen vorsieht. Mittels Add to App ist die Integration von Flutter in bestehende native Apps möglich. So können Teams mit existierender Codebasis neue Anforderungen teilweise oder ganz mit dem SDK umsetzen, ohne gleich den kompletten Quellcode migrieren zu müssen. Defizite gibt es derweil vor allem im Bereich Best Practices. Für viele Produkte haben sich über die Jahre hinweg Standardmuster etabliert. Im Internet finden sich zwar erste Ideen und Konzepte, aufgrund der Neuartigkeit von Flutter sind diese aber mit Vorsicht zu geniessen.

Neuen Kommentar erfassen

Anti-Spam-Frage Was für Schuhe trug der gestiefelte Kater?
Antwort
Name
E-Mail
SPONSOREN & PARTNER