Das Ziel von Flutter?
Das Open-Source Framework Flutter wurde von Google erstmals 2015 der Öffentlichkeit vorgestellt. Das Ziel war es, eine Plattform zu entwickeln, mit der Entwickler*innen mühelos plattformübergreifende mobile Anwendungen erstellen können, die auf allen Betriebssystemen gleichermaßen gut laufen. Die Version 1.0 wurde im Jahr 2018 veröffentlicht und beinhaltete Support für iOS und Android Apps. Version 2.0 wurde im Jahr 2021 vorgestellt. Ab diesem Zeitpunkt war es unter anderem möglich, Flutter für das Web zu nutzen und die Anfänge für die Desktop-Welt wurden gelegt, so dass auch Windows Applikationen erstellt werden konnten. Die Version 3.0 wurde im Jahr 2023 vorgestellt und um Support für macOS und Linux Applikationen ergänzt. Mittlerweile ist Flutter also nicht nur in der mobilen Welt auf iOS und Android anzutreffen, sondern auch im Web, auf dem Desktop und im Embedded-Bereich.
Wie funktioniert Flutter unter der Haube?
Flutter zeichnet sich durch seine innovative Herangehensweise an die Cross-Plattform-Entwicklung aus. Das Besondere ist, dass es nicht die nativen UI-Elemente der verschiedenen Plattformen nutzt, sondern diese nachzeichnet. Dadurch können Entwickler*innen sicherstellen, dass die App auf allen Plattformen konsistent und ansprechend aussieht, ohne sich um plattformspezifische Anpassungen kümmern zu müssen.
Flutter verwendet die Open-Source Programmiersprache Dart. Dart wurde von Google entwickelt und bietet eine schnelle Ausführung, was zu einer reaktionsschnellen Benutzeroberfläche führt. Die entwickelten Apps werden unter anderem in nativen Maschinencode für die jeweilige Plattform übersetzt. Für die Nutzung von nativen Funktionen - z. B. das Ansteuern der Smartphone-Kamera - bietet die große Community von Flutter verschiedene Bibliotheken an. Sollte eine Funktion fehlen, bietet Flutter verschiedene Möglichkeiten, diese aufzurufen und in die Anwendung einzubinden.
Wann ist ein Einsatz von Flutter optimal?
Dadurch, dass Flutter Apps nur eine einzelne Codebasis benötigen, wird viel Zeit in der Entwicklung gespart. Die Geschäftslogik und das Layout der App müssen nur einmal entwickelt werden. Dadurch ist es möglich, ein MVP (Minimum Viable Product) schnell auf den Markt zu bringen und neue Features und andere Kundenwünsche nachzuliefern und zu testen.
Hierdurch sind auch alle Plattformen immer auf dem gleichen Stand der Features der Anwendung.
Die Produktivität der Entwickler*innen wird aber auch durch das Tooling von Flutter weiter gesteigert. So hilft unter anderem die Hot-Reloading-Funktion Änderungen am Quellcode direkt in der laufenden App zu sehen, ohne dass diese neu kompiliert werden muss. Die Developer Tools von Flutter helfen dabei, effizient Performance Engpässe und Fehler im Layout zu finden.
Da Flutter die Bedienelemente selbst zeichnet, ist es möglich, dass das Design der App auf den verschiedenen Plattformen gleich aussieht und sich gleich verhält. So sind auch komplexe Designs und Animationen kein Problem, denn man hat die volle Kontrolle und Anpassungsmöglichkeit über die Gestaltung der App. Dadurch, dass die Apps in den nativen Maschinencode der Plattformen übersetzt werden, ist die Performance auch gegeben: Die Anwendungen laufen mit einer Bildwiederholungsrate von 60 Bildern pro Sekunde. Wenn das Display mehr unterstützt, sogar mit bis zu 120 Bildern pro Sekunde.
Flutter bietet außerdem die Möglichkeit, dass es auch in vorhandene Apps integriert werden kann. So können bestehende Apps Stück für Stück auf Flutter portiert werden, ohne dass auf neue Features in der vorhandenen App gewartet werden muss, bis diese komplett umgeschrieben wurden.
In welchen Situationen ist Flutter möglicherweise nicht die beste Wahl?
Ein Nachteil von Flutter ist, dass der Speicherbedarf der Apps höher sein kann als von nativen Anwendungen, da unter Anderem die Flutter Engine mitgeliefert werden muss. Flutter selbst bietet verschiedene Optimierungsmöglichkeiten, um den Speicherbedarf zu minimieren. Für das Web macht sich der größere Speicherbedarf jedoch stark bemerkbar.
Flutter fehlt bisher die Unterstützung von SEO (Search Engine Optimization). Daher sollte die Umsetzung einer Web-Anwendung, die sonst auf keiner anderen Plattform genutzt wird, genau überlegt sein.
Die neuesten nativen Plattform-Features sind nicht sofort verfügbar. Es dauert eine gewisse Zeit, bis Google, die Community oder man selbst diese an Flutter angebunden hat. Dieses Problem haben alle Cross-Plattform-Frameworks, jedoch bietet Flutter hier Möglichkeiten, native Funktionen zu verwenden. Wenn viele native Funktionen angebunden werden müssen, für die es keine Bibliotheken von der Community gibt, muss auch überlegt werden, ob eine Cross-Plattform-Entwicklung das Richtige ist. Denn der Vorteil der einheitlichen Quellcode-Basis verringert sich.
Flutter ist für ein einheitliches Layout ausgelegt, das heißt dass wir bei der Anforderung an verschiedene Layouts für verschiedene Plattformen eher native Entwicklung empfehlen.
Flutter Support für Smartwatches - vor allem Apple Watches - ist aktuell nicht gegeben oder geplant. Auch dies muss vor der Entwicklung mit Flutter abgewogen werden.
Fazit
Flutter hat sich durch seinen innovativen Ansatz als Cross-Plattform-Framework in der Entwicklung nicht nur bei uns, sondern weltweit bewährt.
Der Einsatz von Flutter für die Entwicklung von Cross-Plattform Anwendungen ist in vielen Fällen sinnvoll. Besonders wenn eine einheitliche Bedienoberfläche und Verhalten gewünscht ist. Jedoch lässt sich pauschal nicht sagen, ob eine native Umsetzung oder mit Flutter die beste Wahl ist. Es kommt auf viele Faktoren an und muss individuell entschieden werden.