Flutter: Eine echte Alternative zu Xamarin?

Die Entwicklung von Apps hat in den letzten Jahren eine grosse Entwicklung durchlaufen. Während in den Anfangszeiten von App Stores und Smartphones Apps grundsätzlich plattformspezifisch und von Grund auf neu programmiert wurden gibt es heute je nach Anwendungsfall unterschiedlichste Herangehensweisen.

flutter apps

Cross-Platform App-Entwicklung bei Bitforge mit Xamarin

In der Regel entwickeln wir alle unsere Apps mit dem Cross Platform Framework Xamarin. Ausnahmen kommen natürlich vor, jedoch nur, wenn dies aus technologischer Sicht oder aus User-Perspektive mehr Sinn macht. Ein Beispiel ist unsere preisgekrönte LIstory-App, welche wir als Progressive Web App mit nativen AR-Elementen entwickelten.

Xamarin bietet sich für uns an, weil es diverse Vorteile mit sich bringt: Es ist bereits seit Langem auf dem Markt, hat eine grosse User-Base sowie eine aktive Community. Ausserdem punkten Xamarin-Projekte mit einer hohen Performance sowie einfach zu erstellenden UIs.

Flutter - Der neue Stern am Horizont?

Seit etwa zwei Jahren hat Google nun sein eigenes Cross-Platform Framework namens Flutter ins Rennen geschickt. War es am Anfang noch etwas halbgar, ist das Entwicklungs-Kit sein einer Weile komplett funktional und verfügt über eine schnell wachsende Anhängerschaft. Laut LinkedIn war Flutter 2019 sogar der am schnellsten wachsende Skill unter Software-Entwicklern. Zeit für uns, einen ernsthaften Blick darauf zu werfen.

Auch Flutter ist wie Xamarin oder React Native (auf das wir zu einem späteren Zeitpunkt genauer eingehen werden) ein Framework zur Erstellung von Cross-Platform Anwendungen. Flutter ist wie die anderen Frameworks komplett Open Source und basiert auf der Programmiersprache Dart. Die ebenfalls von Google entwickelte Sprache ist ECMA-standardisiert und gilt als moderne JS-Alternative.

Was macht Flutter gut?

Ein kurzer Blick auf die Website zeigt sofort, welchen Fokus man bei Flutter vor allem setzt: Es ist vergleichsweise einfach, in realtiv kurzer Zeit schöne, flüssige (Stichwort 60 fps) UIs zu erstellen. Das Framework punktet mit einer nativen Performance sowie einem extrem flexiblen UI. Ebenfalls angenehm ist, dass die Projektstruktur beliebig an Projektanforderungen oder Vorlieben des Entwicklers angepasst werden kann.

Eines unserer Lieblings-Features ist der Hot Reload: Dieser macht insbesondere Bug Fixing deutlich effizienter und erlaubt es, Änderungen direkt im Emulator respektive auf dem Device betrachten zu können. Flutter’s Hot Reload ist Xamarin’s Live Reload dabei deutlich überlegen, da nicht nur das UI sondern der gesamte State der App inklusive Daten geladen und angezeigt werden.

Unterschiede zu anderen Cross Platform Frameworks

Für Entwickler vor allem relevant ist, dass das UI gecodet wird und dass OS-spezifische Funktionen über “Plugins” eingebunden werden. Cool sind die “Platform View Widgets”, welche dazu dienen, gerätespezifische Styles zu bauen und dabei helfen, einen nativen Look zu kreieren. Auf den ersten Blick scheint es, als gebe es für alles Mögliche das passende Widget, was Libraries von drittanbietern überflüssig macht.

Was die Konkurrenz besser macht

Bei aller Schönheit ist auch bei Flutter nicht alles Gold was glänzt. Flutter-Apps tendieren dazu, eher schwer zu werden und stellen Entwickler damit vor Herausforderungen. Besonders unschön ist die Vorstellung, dass man einen Teil der schönen Animationen wieder streichen oder Bilder bis an die Schmerzgrenze komprimieren muss, um “okaye” App-Grössen zu erreichen.

Ebenfalls deutlich überlegen ist Xamarin beim Thema Code Reuse: Während bei Xamarin normalerweise deutlich über 90% des Codes wiederverwendet werden kann, ist dieser Anteil bei Flutter deutlich tiefer. Das Problem liesse sich dadurch lösen, dass man eigene Custom Widgets baut und wiederverwendet. Der plattformspezifischen Code muss jedoch in der plattformspezifischen Sprache geschrieben (iOS: SWIFT, Objective-C / Android: Java, Kotlin) werden.

Für welche Art Apps eignet sich Flutter?

Aus unserer Sicht ist der ideale Flutter-Case eine schöne, UI-zentrierte 2D-App mit nicht allzu grossem Funktionsumfang. Auf der Flutter-Website finden sich einige schöne Beispiele. Besonders passend ist die Philipps Hue App, wo Produkt, UI der App und Flutter ideal zusammenpassen.