Warum Flutter eine vielversprechende Alternative für die Entwicklung von Cross-Plattform-Apps ist

(Bild: Google)
Wer eine App für mehr als ein Betriebssystem entwickeln will, dem stehen immer mehr Möglichkeiten zur Verfügung. React Native, Nativescript, Xamarin, Ionic und jetzt eben Flutter: Alle Tools versprechen plattformübergreifende Apps mit nur einer Codebasis. Doch jede Technologie hat auch ihre Stärken und Schwächen, weshalb man sich im Vorhinein gut überlegen sollte, auf welches Pferd man setzt.
Hohe Performance dank eigener Render-Engine
Im Gegensatz zu React Native, Nativescript und Xamarin verwendet Flutter nicht die nativen UI-Komponenten von Android und iOS. Ähnlich wie eine Game-Engine zeichnet Flutter den Screen-Inhalt mit einer 2D-Render-Engine komplett selbst. Trotzdem sehen Flutter-Apps aus wie native Apps. Das Team von Google war fleißig und hat alle wichtigen UI-Komponenten von Android und iOS nachgebaut. Man muss schon sehr genau hinschauen, um Unterschiede zu den Originalen zu erkennen. Und die Mühe lohnt sich: Die Performance von Flutter-Apps ist hervorragend und Animationen laufen butterweich.
Auch allgemein sind die UI-Komponenten Flutters große Stärke: Wer auf Googles Material Design zurückgreifen will, kann aus dem Vollen schöpfen. iOS-Komponenten sind dagegen immer noch etwas unterrepräsentiert. Besonders aber lässt Flutter die Herzen von Designern und Marketing-Managern höherschlagen, denn benutzerdefinierte UI-Elemente mit komplett individuellem Branding lassen sich unkompliziert erstellen. Weniger zu empfehlen ist Flutter dagegen für Projekte, die jeweils ein natives Look-and-Feel auf Android und iOS anstelle eines einheitlichen Interfaces bieten wollen.
Einen ersten Eindruck von den bereitstehenden UI-Widgets könnt ihr in der Flutter-Gallery-App für Android gewinnen.
Native Funktionen lassen sich mit Plugins realisieren
App-Entwickler verbringen vermutlich die meiste Arbeitszeit mit der Programmierung von Listen und Formularen. Für solche Aufgaben eignet sich Flutter dank seines flexiblen Programmiermodells hervorragend. Doch fast jede App benötigt auch einige Systemfunktionen, zum Beispiel den Zugriff auf die Kamera, die Kontakte oder die zahlreichen Sensoren. Flutter ermöglicht die Integration von nativem Code über Plugins. Sie stellen einen Kommunikationskanal zwischen Flutter-Code und dem nativen Code bereit. Für viele Aufgaben gibt es bereits fertige Plugins vom Flutter-Team und der Community. Wer spezifischere Anforderungen hat, kommt jedoch kaum darum herum, eigene Plugins zu schreiben, und benötigt dementsprechend Kenntnisse in den entsprechenden Programmiersprachen und nativen SDK. Und auch wenn Plugins viele native Funktionen bereitstellen können — irgendwann ist Schluss. Wer seine App wirklich tief in das Betriebssystem integrieren will, etwa mit Hintergrunddiensten, der wird früher oder später auf größere Hindernisse stoßen.
Plugins sind auch das Mittel der Wahl, um bestehenden Code oder Bibliotheken in eine Flutter-App zu integrieren. Vor Projektbeginn sollte daher geprüft werden, wie umfangreich dieser native Code sein wird, um abzuwägen, ob sich die Verwendung von Flutter noch lohnen wird.
Starke Developer-Experience
Flutter-Apps werden mit der Programmiersprache Dart entwickelt. Sie ist leicht zu erlernen, aber nicht ganz so ausdrucksstark wie Kotlin oder Swift. Das Programmiermodell erinnert stark an das reaktive und komponentenbasierte React.js, sodass auch Webentwickler einen schnellen Einstieg finden dürften. Das SDK vermag es, einfache, aber äußerst flexible Widgets bereitzustellen, aus denen überraschend komplexe Layouts zusammengesetzt werden können.
Das sogenannte Hot Reloading reduziert die Kompilierzeit drastisch. Änderungen am Code werden innerhalb weniger Sekunden und ohne den Verlust des aktuellen View-States übernommen. Insbesondere bei der Feinjustierung des User-Interfaces lässt sich so viel Zeit sparen. Die Entwicklung mit Flutter macht richtig Spaß und geht meist schneller von der Hand als bei der nativen Entwicklung.
Die Euphorie wird dadurch etwas gedämpft, dass Flutter noch immer in der Prerelease-Phase ist und noch einige Bugs enthält. Etwas Kreativität und Flexibilität bei der Problemlösung sind also Voraussetzung. Wer strengen Spezifikationen folgen muss und langfristige API-Stabilität benötigt, ist mit Flutter derzeitig wohl (noch) nicht gut bedient. In der Flutter-Community kursieren aber bereits Gerüchte, dass der offizielle Release am 4. Dezember auf der „Flutter Live“ in London bekannt gegeben werden könnte.
Fazit
Wer mit seiner App hauptsächlich Daten erfassen und anzeigen will, kann mit einem Cross-Plattform-SDK wie Flutter viel Zeit sparen. Flutter zeichnet sich besonders durch seine vielseitigen und hübschen UI-Elemente und die hervorragende Performance aus. Apps im Material-Design-Look oder auch mit einem ganz eigenen Branding lassen sich mit Flutter zügig realisieren.
Eine gute App benötigt natürlich auch Zugriff auf Systemfunktionen, sonst hätte sie kaum einen Vorteil gegenüber einer mobilen Website. Das Plugin-Konzept von Flutter ermöglicht die Integration von nativem Code, womit sich grundlegende Systemzugriffe realisieren lassen. Es eignet sich dagegen weniger, wenn diese Funktionen den Kern der App bilden und sich tief ins Betriebssystem integrieren sollen.
Entwickler werden ihren Spaß mit Flutter haben. Ein Grundverständnis über die darunter liegenden Betriebssysteme iOS und Android sowie deren Build-Prozess kann jedoch nicht schaden, da Flutter aufgrund seines jungen Alters hier und da noch nicht ganz rund läuft.