Dieses Buch befasst sich mit einer innovativen Technologie zur effizienten Entwicklung von Apps für Mobilgeräte. Damit wird es möglich, native Apps plattformübergreifend in nur einer Programmiersprache zu verwirklichen. Verschiedene praxisnahe Beispiele führen in die neue Technologie mit dem Namen „Flutter“ ein. Hauptteil ist die Beschreibung einer komplexeren App, eines 2D-Spiels mit dem Namen „Chicken Maze“. Ziel des Spiels ist es, ein Huhn durch mehrere Level zu navigieren, dabei kann man Punkte sammeln und muss sich Feinden stellen.
Als Steve Jobs Anfang 2007 das iPhone präsentierte, war das eine Zäsur in der digitalen Welt. Er demonstrierte auch eine neuartige Art von Software, die man auf dem neuen Gerät laufen lassen kann, die sogenannten Apps. Das Wort ist eine Abkürzung für „Applications“, also Anwendungen. Die Abkürzung sollte vermutlich suggerieren, dass es sich hierbei um kleinere Programme handelt. Tatsächlich waren die ersten Apps kleinere Spielereien, beispielsweise die Biertrinker-App: Man konnte das Handy an den Mund führen und kippen, ein auf dem Display zu sehender Bierpegel wurde langsam weniger, am Ende ertönte ein Rülpsgeräusch. Verblüffend daran war, dass der Pegel immer die horizontale Ausrichtung beibehielt, da das Programm die Neigung des Gerätes mithilfe eines eingebauten Sensors bestimmen konnte. Die App konnte und kann man über den App-Store beziehen, eine für damalige Zeiten revolutionäre Cloud-basierte Software-Verkaufsplattform von Apple, exklusiv für die Mobilgeräte von Apple.
Die Leute standen Schlange an den Apple-Stores, um ein iPhone zu erwerben, und waren gierig nach neuen Apps. Auch die Entwickler stürzten sich auf das neue Gerät, es war eine Art neuer Goldrausch. 2008 kam dann das erste Konkurrenz-Handy mit einem Android-Betriebssystem heraus. Das Betriebssystem wurde vor allem von Google entwickelt. Damit stellte Google den Herstellern von Mobilgeräten eine fertige Systemsoftware zur Verfügung. Dort integriert wurde ebenfalls ein Store, der Google Play-Store. Kurzzeitig gab es weitere Konkurrenz-Systeme wie Windows Mobile oder webOS, die sich jedoch nicht etablieren konnten und schließlich wieder verschwanden. Übrig geblieben sind iOS und Android, heutige Entwicklungs-Werkzeuge konzentrieren sich deshalb ausschließlich auf diese beiden. Der Goldrausch ist schon lange vorbei, und mittlerweile muss man viel Aufwand als Entwickler treiben, um kommerziellen Erfolg durch die Entwicklung von Apps zu haben.
1.1 Cross-Plattform Entwicklung
Oft werden Apps zweimal entwickelt und individuell auf die jeweilige Plattform portiert. Native Apps1für die iOS-Umgebung, also für Apple-Mobilgeräte, werden mithilfe der Programmiersprachen Objective-C oder Swift und Apple-eigenen Frameworks programmiert. Android-Apps basieren dagegen meist auf der Java-Plattform mit den Programmiersprachen Java oder Kotlin. Will man mit der hauseigenen Technologie der konkurrierenden Firmen arbeiten, muss man den Code mühselig von Hand in die anderen Sprachen übersetzen.
Der Bedarf für eine plattformübergreifende Lösung war deshalb schon bald vorhanden, verschiedene Technologien wurden entwickelt. Grundsätzlich kann man zwischen zwei Ansätzen unterscheiden: Zum einen gibt es Frameworks, die mittels Web-Technologien arbeiten. Das sollte man allerdings nicht mit Web-Apps verwechseln. Diese sind lediglich Webseiten, die sich an das Mobilgerät möglichst gut anpassen. Für App-Entwicklung gibt es das Vorgehen, dass man Webseiten in die App einbettet und diese über eine Browser-Komponente, die den gesamten Bildschirm ausfüllt, präsentiert. Der eigene Code wird in JavaScript programmiert. Über ein API kann man mit nativen Komponenten sprechen, die dann die spezielle Hardware des Gerätes ansprechen kann. Diese Vorgehensweise hat zwei Nachteile: Man kann nur solche Features nutzen, die auf beiden Plattformen verfügbar sind. Zudem ist die Performance eingeschränkt, da man es schließlich mit einer Browser-Anwendung zu tun hat. Der Vorteil ist, dass sich auch Web-Entwickler an die App-Programmierung wagen können. Bekannte Frameworks dieser Art sind React Native von Facebook und Apache Cordova (ehemals PhoneGap von Adobe).
Der andere Ansatz ist folgender: Man programmiert mit Plattform-unspezifischen Sprachen und Frameworks, die dann in die gewünschte Umgebung cross-kompiliert werden und deshalb performanter sind. Ein bekannter Vertreter dieser Technologie ist Xamarin von Microsoft. Dort wird mit C# programmiert. Auch das Flutter-Framework mit der Programmiersprache Dart fällt in diese Kategorie.
1.2 Motivation
Der Hype um Flutter setzte 2018 ein, als bekannt wurde, dass Google an einem neuen Betriebssystem mit dem Namen Fuchsia arbeitet und es Spekulationen gab, dass dieses neue Betriebssystem Android ersetzen solle. Mittlerweile hat Google dies dementiert und verkündet, dass das neue Betriebssystem auf zukünftigen neuartigen Geräten zum Einsatz kommen soll. Fuchsia ist Open Source und frei verfügbar, man kann es ausprobieren und installieren[35]. Bei der Oberflächenprogrammierung kommt Flutter zum Einsatz. Im Buch wird auf Fuchsia selbst nichtweiter eingegangen, allerdings kann man die im Buch vermittelten Kenntnisse ebenso bei der Anwendungsentwicklung für Fuchsia anwenden. Die grafische Benutzeroberfläche wird mit einer Render-Engine namens Skia visualisiert, programmiert wird diese in Flutter. Das Framework war nach der ersten Veröffentlichung in der Alpha- bzw. Beta-Phase und erlaubte bereits die Programmierung von nativen Apps für iOS und Android-Systeme. Zudem gab es Empfehlungen von Google, dass man seine Apps besser mit Flutter realisieren soll, da dieses das Google Material-Design realisiert. Das Interesse an Flutter war dadurch auch beim Autor geweckt, der zu dieser Zeit eine Lehrveranstaltung für Medieninformatiker zur App-Programmierung plante.
1.3 Zielgruppe
Die Zielgruppe für das Buch sind dementsprechend interessierte App-Enwickler*innen, die sich für die neue plattformübergreifende Programmierung von Apps interessieren. Hierbei kann es sich um professionelle Programmierer*innen oder Studierende von Studiengängen mit Informatik- oder Medienbezug handeln. Alle diese Personen sollten über gewisse Grundkenntnisse in der Programmierung verfügen. Das Buch gibt keine grundlegende Einführung in die Programmierung. So wird nicht auf den Sinn von Variablen, Schleifen und Kontrollstrukturen eingegangen. Zwar wird auch für diese die Syntax für Dart erklärt, aber der Zweck der Konstrukte sollte klar sein. Auch Kenntnisse der objektorientierten Programmierung sollten vorhanden sein. Idealerweise sollten sich die Leser*innen auch mit Programmbibliotheken und der Kommandozeile bereits auseinandergesetzt haben. Kenntnisse in Java, C#, JavaScript oder C++ als erste Programmiersprache wären ideal.
1.4 Aufbau und Ziel des Buches
Das Buch will auf Fallstricke hinweisen, in die man zwangsläufig gerät, wenn man sich auf das Abenteuer einlässt, eine neue Programmiersprache und ein neues Framework zu lernen. Das Buch besteht aus einem Grundlagen- und einem Praxisteil. Im ersten Teil werden die wichtigsten Konstrukte der Sprache Dart erklärt. Im Anschluss gibt es eine Einführung in die App-Programmierung mit Flutter. Dort werden schon einfache Beispiele gezeigt. Im Praxis-Teil folgen komplexere Beispiele, beginnend mit einer Messenger-App, die die Verbindung der App mit der Cloud demonstriert. Es folgt ein komplexeres Beispiel, ein 2D-Spiel mit dem Namen „Chicken Maze“, bei dem ein Huhn der Spielcharakter ist. Das Spiel ist nicht zu komplex, aber mehr als eine Demo-App. Es verfügt über Features, die auch professionelle Anwendungen benötigen. Der Code der Beispiele wird im Detail erklärt, dabei werden spezifische Programmiertechniken von Flutter und Dart beschrieben.