Flutter – Die Zukunft der App-Entwicklung

Jonas Hengsbach
31.01.2020
Jonas Hengsbach

Flutter ist der wohl größte Trend, den die Mobile-App Entwicklung seit Jahren erleben durfte. Gerade mal im Dezember 2018 hat die Technologie die Entwicklungsphase verlassen und ist innerhalb von nur einem Jahr zu dem beliebtesten Cross-Plattform-Framework auf dem Markt geworden.

# Warum überhaupt das Ganze?

Cross-Plattform-Frameworks wie Flutter bieten eine hohe Effizienz. In den meisten Fällen bieten Unternehmen ihre Anwendungen im Internet, auf iOS und auf Android an. Da sich diese Plattformen nicht nur von der Benutzeroberfläche, sondern auch im Hintergrund technisch stark unterscheiden, werden heutzutage traditionell entweder drei unterschiedliche Apps (Native-Apps) oder eine responsive Web-App entwickelt.

Drei Apps zu entwickeln und zu pflegen ist ein hoher Zeit- und Kostenaufwand und muss in der Regel von drei getrennten Entwicklern oder Entwicklerteams, welche sich auf je eine Plattform konzentrieren, übernommen werden. Eine Praktik, welche sich oft lediglich große Unternehmen leisten können und damit oft nicht in Betracht gezogen wird oder werden kann.

Eine Alternative die sich in den letzten Jahren etablieren konnte ist die Entwicklung einer responsiven und damit auf Mobilgeräte angepassten Web-App, sodass mobile Nutzer einfach über die Mobile Webseite auf die Anwendung zugreifen können. Das löst in erster Linie die Aufwandsproblematik, führt jedoch zu einer deutlich schlechteren Nutzererfahrung, weswegen es keine gute Lösung für Unternehmen ist, welche eine besondere Nutzerbindung aufbauen möchten.

Aufgrund dieser Gegensätze, wird seit Jahren versucht eine Zwischenlösung zu finden, welche die positiven Eigenschaften beider etablierten Lösungen miteinander kombiniert. Eine Technologie, welche die Entwicklung für mehrere Plattformen ermöglicht, nennt man Cross-Plattform-Framework. Dass seit Jahren immer wieder versucht wird, eine neue Lösung zu etablieren, könnte bereits deutlich machen, dass dies leichter gesagt als getan ist.

# Ist Flutter die Antwort auf alle Probleme?

Keine Lösung ist perfekt, genau wie die etablierten Lösungen – Native-Apps und Web-Apps – hat auch jedes Framework eigene Schwachpunkte. Doch gibt es klar für jedes Produkt eine Technologie, welche für den jeweiligen Einsatzzweck geeignet ist und Flutter ist die Technologie, die das größte Spektrum besonders gut abdeckt. Um einen Vergleich zwischen Flutter und den alternativen Cross-Plattform Frameworks zu bekommen, werden im Folgenden die Lösungen Ionic-Framework und React-Nativ beschrieben.

# Alternative Ionic-Framework

Das Ionic-Framework ermöglicht die Entwicklung von sogenannten Hybrid-Apps. Hierbei wird eine Webseite in einer App präsentiert, wobei typische Browser-Elemente, wie zum Beispiel die Adressleiste, ausgeblendet werden. Mit vorgestalteten Elementen, welche sich dem Betriebssystem (iOS oder Android) anpassen, kommt die eigentliche Web-App somit dem Look und Feel einer Nativen Anwendung sehr nah, sodass die meisten Nutzer die Unterschiede nicht bemerken. Außerdem ist die Entwicklung mit Ionic sehr produktiv. Da eine Web-App entwickelt wird, welche auch auf iOS und Android funktioniert, muss lediglich eine Anwendung für alle drei Plattformen entwickelt werden.

Jedoch handelt es sich bei dieser Lösung um eine Webanwendung. Dadurch sind die Möglichkeiten eingeschränkt. Einige Native-Gerätefeatures wie die Kamera oder biometrische Anmeldemethoden sind komplizierter einzubinden und komplexe Apps können unter Umständen Performance-Probleme vorweisen. Demnach ist das Ionic-Framework für komplexere und besonders anspruchsvolle Projekte nicht zu empfehlen.

# Alternative React-Native

React-Native arbeitet mit einem anderen Ansatz als das Ionic-Framework und ist vom Konzept eher mit Flutter vergleichbar. Mit React-Native werden Hybrid-Native-Apps entwickelt, was sich von Hybrid-Apps in dem Punkt unterscheidet, dass nicht lediglich ein Webbrowser angezeigt wird, sondern der Quellcode in eine App für das jeweilige Betriebssystem umgerechnet wird.

Dadurch kann React-Native eine deutlich bessere Performance als Ionic bieten, was es zu einer beliebten Alternative zu nativen Apps macht.

Zusätzlich wird React-Native von Facebook finanziert und entwickelt, was eine gewisse Zukunftssicherheit garantiert – ein Grund für viele bekannte Unternehmen auf React-Native zu setzen.

Ein Nachteil von React-Native ist, direkt eine App für das Web zu erstellen. Hier muss bei Bedarf eine zweite Anwendung für das Web entwickelt werden. Das mag für anspruchsvolle Projekte kein Problem sein, da in der Praxis die Kombination von Web und Mobile-App einige generelle Probleme auslösen kann. Zwei getrennte Apps sind in vielen Fällen eine deutlich bessere Wahl, jedoch ist es trotzdem ein Punkt, der React-Native für viele kleinere Projekte eher ausschließt.

Außerdem bietet React kaum vorgestaltete Elemente, weswegen in der Regel ein eigenes Design System in React-Native-Apps verwendet wird, was normalerweise lediglich bei größeren Projekten Sinn ergibt. Der wohl größte Nachteil ist, dass React-Native erstellten Apps oft nicht perfekt auf beiden Geräten funktionieren und beide Plattformen teils individuelle Anpassungen benötigen.

All diese Punkte führen zu einer längeren und aufwendigeren Entwicklungsphase, was es eher zu einer Alternative zu nativen Apps macht, und damit einen anderen Markt als das Ionic Framework bedient.

 

Abb. 1 – Google Trends: Steigendes Suchvolumen und somit höheres Interesse an Flutter gegenüber React-Native, im Zeitraum 01.2017 – 01.2020

# Flutter to the Rescue!

Flutter ermöglicht ebenfalls die Entwicklung von Native-Hybrid-Apps und soll die Mängel von React-Native ausgleichen. Zunächst erfährt Flutter wie React-Native die Unterstützung eines Tech-Giganten: Google. Die Google Ads App – welche für einen Großteil von Googles Einkommen mitverantwortlich ist – oder die Google Stadia App – ein „Gaming on Demand“ Service, in welches Google stark investiert – sind nur zwei Beispiele von Apps, bei denen Google selbst auf die Flutter Technologie setzt.

Apps laufen problemlos sowohl auf Android als auch auf iOS. Viele vorgestaltete Elemente, großartige Performance, schnelle Entwicklungszeiten, tiefe und einfache Integration mit Nativen Gerätefeatures. Zudem gibt es zukünftig die Möglichkeit, die mobilen Apps anzupassen und als Web oder Desktop Apps zu verwenden. Flutter klingt wie der Traum eines jeden Mobile Entwicklers, welcher die Fehler von React-Native ausgleicht und gleichzeitig geeignet für kleinere Projekte ist, für die eine Responsive Web-App oder das Ionic-Framework scheinbar ungeeignet ist. Aber auch Flutter hat aktuell gewisse Mängel und selbstverständlich sollte man diese nicht außer Acht lassen.

# Wo ist der Haken?

Zunächst muss zwischen Mängeln, die in der Natur von Cross-Plattform-Frameworks liegen und Mängeln, die Flutter selbst zu verantworten hat, unterscheiden. 

Zunächst wird die Performance einer Native-Hybrid-App das Level einer nativen App nicht erreichen können. Das bedeutet nicht, dass jede App mit Flutter eine schlechte Performance hat. Mobile Geräte bieten heutzutage eine unglaubliche Rechenleistung, die normale Apps – wie sie normalerweise mit Flutter umgesetzt werden – niemals ausschöpfen könnten. Aber ein aufwendiges 3D Videospiel oder eine komplexe Augmented Reality App wird bei Flutter eher an seine Grenzen stoßen, als bei plattformspezifischen Nativen Technologien.

Außerdem werden Native-Apps immer schneller den modernsten Stand der Technik erreichen. Wenn iOS oder Android neue Features erhalten, werden diese zuerst mit den nativen Technologien ermöglicht. Erst wenn diese Schnittstelle bereitsteht, kann das Team eines Cross-Plattform-Frameworks beginnen, dieses zu planen und zu entwickeln. Flutter hat hier jedoch den besonderen Vorteil, dass es genau wie Android von Google geleitet und entwickelt wird. Daher kann das Flutter Team teilweise schneller Insiderinformationen über zukünftige Android Features erhalten und daher auch schneller mit Innovationen gehen. Auf neue iOS Features kann Flutter jedoch – genau wie andere Frameworks – nur im Nachhinein reagieren.

Da Flutter noch in der Marktreife ist, bringt diese Technologie auch einige Fehlfunktionen mit sich. Dies kann unter Umständen dazu führen, dass bestimmte Teile einer App später umgeschrieben werden müssen. Das Flutter Team versucht diese sogenannten „Breaking Changes“ möglichst selten durchzuführen und alternative Möglichkeiten zu erschaffen.

Immer mehr große Unternehmen erkennen das Potenzial von Flutter und verwenden das Framework für ihre Apps. Dazu zählen neben Google bspw. Ebay, BMW, Philips und die chinesischen Tech-Giganten Alibaba und Tencent. Trotzdem: Flutter ist noch nicht so weit verbreitet und etabliert wie bspw. React-Native – welches inzwischen viele Unternehmen durch Flutter ersetzen – und daher sind die Erfahrungen eingeschränkter.

Noch ein Punkt welcher betrachtet werden sollte, sind noch nicht fertige Features. Große Features, wie der Support für Flutter Applikationen, die auch im Internet laufen, sind noch in der aktiven Entwicklung und werden erst mit der Zeit bereit für die Produktion sein. Doch wie bereits erwähnt: Es ist nicht die beste Praktik eine Web und Mobile-App zu kombinieren, weswegen problemlos die Mobile-App mit Flutter und die Web-App nebenbei mit einem Web-Framework wie Angular entwickelt werden kann.

Im Großen und Ganzen lässt sich sagen, dass Flutter nicht die perfekte Lösung ist. Im Vergleich zu den beiden Lösungen im Beitrag jedoch deutlich weniger Fehlerquellen vorweist. Das Framework hat aber insgesamt ein großes Potenzial und ist wahrscheinlich trotzdem – je nach Anwendungsgebiet – die aktuell beste Lösung auf dem Markt.

# Fazit

Flutter hat im Laufe des vergangenen Jahres einen hohen Zuspruch bekommen und auch die Zahlen (siehe Abb. 1) sprechen hier für Flutter. Zwar sind kleine Projekte nicht auf die Leistung und den Funktionsumfang von Flutter angewiesen, doch für alle Projekte ,welche mehr als den normalen Funktionsumfang benötigen, ist Flutter eine großartige Entscheidung.

Insgesamt eignet sich Flutter für alle Projektgrößen, denn die Erfahrungen großer Konzerne bestätigt, dass sich auch große und hoch komplexe Enterprise Anwendungen mit der Technologie umsetzen lassen.