Flutter

Was die neue Cross-Plattform-Technologie zu bieten hat

Flutter ist die neueste Cross-Plattform-Lösung von Google und hat, so wie es aussieht, überragende Zukunftsaussichten in der App-Entwicklung.
Entwickler sollten über dieses neue Framework also zumindest Bescheid wissen. Alles, was Du über die Entwicklung mit Flutter wissen musst, inklusive der Vorstellung der Community, der Besonderheiten sowie der Stärken und Schwächen erfährst Du hier.

Was ist Flutter?

Flutter ist ein recht junges Cross-Plattform-Framework. Solche Frameworks machen es App-Entwicklern leicht, dieselbe Code-Basis für eine App gleich für mehrere Betriebssysteme zu verwenden. Anstatt also nativ für viele Plattformen einzeln zu entwickeln, was für gewöhnlich in einem sehr großen Aufwand resultiert, greift man auf die App-Entwicklung im Cross-Platform-Stil zurück, bei der ein einziger Code praktisch und effizient alle Plattformen bedient.

Es wurde 2017 von Google ins Leben gerufen, ist also noch ein recht junges Framework. Das Google Chrome-Team hatte ursprünglich versucht, das traditionelle CSS-Layout wegzulassen, um die Performance des Browsers zu erhöhen. Hierbei ist die Flutter Engine entstanden, die sich dann allmählich zum Flutter SDK weiterentwickelt hat, welches wir heute kennen.

Es handelt sich um ein Open-Source Software Development Kit, das Apps für Android, iOS, Windows, Linux, macOS, Google Fuchsia sowie fürs Web erstellen kann. Es bietet Standard-User Interface-Elemente, die man von Android und iOS kennt, sodass die Anwendungen aussehen und sich auch so verhalten wie native Anwendungen für die entsprechenden Systeme.

Der Blickpunkt liegt, Flutter zufolge, einerseits auf schnelle Entwicklungszeiten: Mithilfe der Hot Reload-Funktion werden die Auswirkungen von Veränderungen, die Du im Code vorgenommen hast, innerhalb von Sekunden für Dich sichtbar. Andererseits können mit den „Widgets“ eine hohe Nativität und Flexibilität in der Gestaltung der Anwendung erreicht werden.

Abgrenzung zu anderen Frameworks

Im Gegensatz zu anderen vergleichbaren Technologien, wie z. B. Facebooks React Native, gibt es hier einen neuen Ansatz von Google: Flutter-Apps benutzen Widgets. Anders als normalerweise handelt es sich hier aber nicht um sogenannte OEM-Widgets, die schon vom jeweiligen mobilen Endgerät zur Verfügung gestellt werden. Stattdessen wird auf ambitionierte Weise die eigene Rendering-Engine „Skia“ genutzt, um diese Widgets zu erstellen.

Grafikbibliothek Skia

Skia ist eine Open-Source-2D-Grafikbibliothek, die ursprünglich von der Skia Inc. entwickelt und dann im Jahr 2005 von Google erworben wurde. 2008 wurde sie dann als Open-Source-Software zugänglich gemacht. Die Grafikbibliothek ist geschrieben in C++ und findet ihre Verwendung mittlerweile in Google Chrome, Chrome OS, Chromium OS, Mozilla Firefox, Firefox OS, Mozilla Thunderbird, Android, LibreOffice, Avalonia – und auch in Flutter.

Um eine native User Experience in Flutter-Apps zu ermöglichen, wurden mithilfe von Skia alle UI-Komponenten, die z. B. typisch für iOS sind, reproduziert und ins Flutter-Framework integriert. So erweckt die Cross-Plattform-App mithilfe von Skia ganz einfach den Anschein, als ob man eine native App in den Händen hält.

Widgets

In Flutter-Apps ist jedes Element ein Widget; es handelt es sich um die grundlegenden Bausteine, mit denen das UI der eigenen mobilen Applikation aufgebaut wird. Ein Widget kann z. B. ein Button, eine Scrolling List oder sogar eine ganze Seite sein und seinerseits aus mehreren Widgets bestehen. Möglich sind aber auch plattformspezifische Funktionen, wie z. B. der Kamerazugriff oder die GPS-Funktion.

Ein Set bereits vorgefertigter Widgets ist bereits enthalten. Im Wesentlichen gibt es hier die elementarsten und einfachsten Funktionen, welche bei der Entwicklung häufig benötigt werden. So können z. B. gestylte Buttons, Dialoge, Navigationsleisten, Checkboxes und Tabs von Anfang an schnell im eigenen Programm implementiert werden. Wie oben bereits erwähnt gibt es diese Widgets im Android-Stil mit Material-Design oder im iOS-Stil mit Cupertino-Design, sodass für beide Plattformen ein natives Erlebnis erreicht werden kann.

Die Widgets lassen sich bei Bedarf aber auch individualisieren bzw. erweitern. Du kannst ihre Eigenschaften nach eigenem Belieben verändern und sie auf Vorgänge reagieren lassen, die Du vorher definierst. Natürlich ist es Dir auch möglich, von Grund auf eigene Widgets zu erstellen und Deine App zu einem persönlichen, individuellen Projekt zu machen.

Der Umstand, dass alle Elemente Widgets sind, ermöglicht es, dass die App sich leicht an sämtliche mobile Endgeräte anpasst. Selbst die Seiten sind Widgets; es müssen daher nur die Orientation und die Bildschirmabmessungen des Tablets oder des Smartphones abgefragt werden, und die Anwendung passt sich mühelos dem Gerät an.

Programmiersprache Dart

Die Programmiersprache für Flutter-Apps ist Dart. Dart wurde und wird von Google entwickelt und ist 2013 erschienen. Die Entwickler wollten eine Alternative zur Programmiersprache JavaScript erschaffen, da sie glauben, dass die Mängel in JavaScript sich nicht mehr durch eine Weiterentwicklung ausbessern lassen. Die Sprache ist sehr ähnlich zu den bekannten Sprachen C# oder Java, und die Syntax erinnert an die Sprache C. Dies erleichtert den Zugang für Umsteiger ungemein.

Mit dem Release von Flutter 1.12 Ende des Jahres 2019 wurde auch Dart mit Version 2.7 weiter ausgebaut. Das „Dartpad“, ein Online-Editor, wurde dabei um die Funktion erweitert, Flutter-Anwendungen auszuführen. Beim Ändern des Quellcodes kann man hier die Auswirkungen direkt in der mobilen App sehen.

In der Praxis kannst Du jeden beliebigen Texteditor verwenden, um Deinen Dart-Code zu programmieren. Der Hersteller selbst empfiehlt aber, sich eine Entwicklungsumgebung, z. B. Visual Studio Code, herunterzuladen und dort die Flutter- sowie Dart-Plugins zu installieren. Hier werden Dir dann nämlich praktische Hilfen angeboten, wie z. B. intelligente Code Completion, Syntaxhervorhebung und weitere.

Programme, die in dieser Sprache geschrieben wurden, können auf mobilen Plattformen laufen, indem sie zu ARM- und x86-Code kompiliert werden. Des Weiteren ist es auch möglich, dass sie im Web als Web-App ausgeführt werden. Hierfür ist lediglich die Konvertierung in JavaScript-Code notwendig.

Community

Artikel

Jedem Mitglied der deutschen Community ist es möglich, einen eigenen Artikel auf der offiziellen Webseite zu verfassen: Man hat die Wahl, ob man als erfahrener Entwickler ein Tutorial zu einem bestimmten Thema veröffentlichen möchte, oder vielleicht doch lieber bestimmte Funktionen des Flutter-Frameworks bewerten will. Zu jeder vorstellbaren Thematik kann man hier seine Gedanken mit der Community teilen.

Auf der Website kann man bereits eine Vielzahl von Artikeln lesen, die seit Juli 2019 veröffentlicht werden. Es gibt Anleitungen darüber, wie man Spielapps programmiert, Feuerwerk-Animationen erschafft, Bilder und Sounds integriert, Formulare erstellt, ein Karussell einbaut (mit dem man von Element zu Element wischen kann), bestimmte Widgets nutzt und vieles mehr.

Meetups

Regelmäßig werden in ganz Deutschland Meetups veranstaltet, auf denen man gleichgesinnte Entwickler antreffen kann und die Gelegenheit bekommt, sich mit ihnen auszutauschen. Dabei variieren die Events in ihrer Art; Beispiele reichen von Vorträgen für Anfänger zu Projektvorstellungen und Hackathons. Für mehrere Städte gibt es bereits Gruppen, in die man sich eintragen kann, und wenn für Deinen Ort noch keine existiert, kannst Du ganz einfach eine neue gründen.

Jeweils eine Gruppe für zwölf Orte bestehen bereits, in die man sich direkt eingliedern kann, wenn man sich zugehörig fühlt. Die Gruppe in München hat mit aktuell 723 Mitgliedern die größte Anhängerschaft, gefolgt von der Gruppe in Berlin mit 602 Mitgliedern und der Gruppe in Düsseldorf mit 475 Mitgliedern. Das Miteinander findet so seinen Weg auch in die eigene örtliche Umgebung.

Slack-Channel

Speziell für die deutsche Community gibt es außerdem einen Slack-Channel. Hierbei handelt es sich um ein praktisches, informatives Forum, in dem Neuigkeiten verbreitet werden und in dem man sich über persönliche Erfahrungen rund um das Flutter-Framework austauschen kann. Darüber hinaus bietet der Slack-Channel einen Job-Thread, in dem man entweder Stellenangebote veröffentlichen oder selbst fündig werden kann.

Der Channel stellt also eine tolle Gelegenheit dar, mit der gesamten deutschen Community in Kontakt zu treten und über das zu diskutieren und sich zu unterhalten, wofür sich alle Teilnehmenden interessieren: die Flutter-Entwicklung. Der Zusammenhalt der Community wird damit um einiges gestärkt und gefestigt, und vielleicht werden hier auch längerfristige Kontakte geknüpft.

Vor- und Nachteile

Vorteile

Flutter-Apps weisen normalerweise eine sehr gute Performance auf. Die JavaScript Bridge (JSBridge) ist hier nicht gegeben, wodurch die CPU-Nutzung an native Applikationen erinnert. Somit sind Flutter-Apps von der Performance her sogar vergleichbar mit nativen Anwendungen für die jeweiligen Plattformen, was ein erstaunlicher und erfolgversprechender Faktor ist.

Ein weiterer großer Vorteil ist, dass es in den Bibliotheken zahlreiche Elemente fürs User-Interface gibt, die bereits vorgefertigt sind und nur noch an den passenden Stellen in der eigenen Applikation eingesetzt werden müssen. Des Weiteren wird auch eine umfassende Auswahl an UI-Modulen mitgeliefert, die zusätzlich sehr stilvoll aussehen können.

Die Hot Reload-Funktion ist ein sehr nützliches Feature, welches die Bearbeitungen, die man am Quelltext vorgenommen hat, augenblicklich umsetzt. Die Auswirkungen am Projekt werden umgehend sichtbar, ohne dass die Applikation extra neu gestartet werden muss. Das macht die Entwicklung um ein Vielfaches angenehmer und vor allem schneller.

Die Programmiersprache Dart ist sehr leicht und angenehm zu erlernen. Durch ihre Nähe zu bekannten Sprachen, wie etwa C# oder Java, kann es wahrscheinlich keine bessere Sprache für Umsteiger geben. Sowohl in der Syntax als auch in der generellen Funktionsweise weist sie große Ähnlichkeiten zu bereits bekannten Sprachen auf.

Nachteile

Ein Nachteil ist, dass Du jedes Mal, wenn die Designvorgaben eines Betriebssystems aktualisiert werden, eine neue Version Deiner Flutter-App in den Stores herausbringen musst. Das hängt damit zusammen, dass Du dann auch Flutter aktualisieren musst und somit auch Deine Flutter-App. Dadurch, dass Du mehrere Betriebssysteme berücksichtigen musst, kann das schnell lästig werden.

Einen einheitlichen Stil in der gesamten Applikation umzusetzen, fällt schwer. Jede Klasse muss einzeln an den Stil angepasst werden, und es ist nicht möglich, das Gesamtbild auf einen Schlag zu stilisieren. In der Praxis kann das ein langwieriger Prozess werden, in welchem man z. B. alle Textelemente gesondert anpassen muss.

Beim Programmieren ist der Code sehr unübersichtlich. Der Einsatz von Widgets bewirkt, dass das Ganze vielfach verschachtelt ist, und auch der Funktionscode befindet sich in der gleichen Datei. Als Folge kann man schnell den Überblick darüber verlieren, was man schon programmiert hat.

Aus dem Umstand, dass es noch ein sehr junges Framework ist, ergeben sich gleich mehrere Nachteile: Leider existieren noch nicht viele Bibliotheken, die man bei der Entwicklung verwenden könnte. Außerdem gibt es aktuell erst wenige erfahrene Entwickler und die Community ist klein, wodurch der Support nicht gerade ideal ist.

Fazit

Flutter ist Googles neuestes Cross-Platform-Framework, das die Entwicklung von Apps auf mehreren Plattformen leicht macht. Es fällt mit seinen Widgets auf, die ihren Ursprung nicht im jeweiligen Endgerät haben, sondern mithilfe der Grafikbibliothek Skia nachgebaut wurden und die grundlegenden Bausteine beim Entwickeln darstellen. Dementsprechend kommt Flutter mit vielen bereits vorgefertigten Widgets daher, die sich aber auch individualisieren lassen.

Die Programmiersprache Dart ist leicht zu erlernen, weil sie bekannten Sprachen sehr ähnlich ist. Der Code lässt sich am besten in einer Entwicklungsumgebung mit den entsprechenden Plugins schreiben, bevor er auf Mobilgeräten und im Internet durch Konvertierung realisiert werden kann. Das Gemeinschaftsgefühl der Community wird durch selbstverfasste Artikel, Events und einem eigenen Slack-Channel gefestigt.

Alles in allem ist es eine leistungsstarke, einfache und effiziente Art, seine App für die maximale Reichweite auf vielen Plattformen zu entwickeln. Wegen vereinzelter Mängel, die wohl hauptsächlich davon herrühren, dass es ziemlich jung ist, wirkt es an manchen Stellen trotzdem noch etwas lückenhaft.