Das Buch beginnt mit einer Einführung des Lesers in die Programmiersprache Dart, deren Nutzung in Flutter verpflichtend ist. Für mit C oder Java erfahrene Entwickler sind die Ausführungen vom Niveau her stellenweise zu niedrig – andererseits vermitteln die Autoren im Rahmen der Besprechung der verschiedenen Aspekte des Programmiersystems immer wieder Hintergrundinformationen, die auch diensterfahrenen Entwicklern beim Verständnis ihrer neuen Arbeitsumgebung helfen.
Überlegungen zu generischen Datentypen und der Speicherung von Elementen in verschiedenartigen Collections dienen als Überleitung zu komplexen Problemen, insbesondere in den Bereichen Modularisierung von Code und Verwaltung von Nullreferenzen. Die (streitreichen) Entscheidungen in Bezug auf Null Safety betrachtet das Lehrbuch balanciert und geht auf Methoden zur Aktualisierung von vorhandenem Dart-Code ein. Zu guter Letzt finden sich Überlegungen zum von NuGet inspirierten Bibliotheksmanager pub.dev.
Mann vs. GUI
Deklarative Benutzerschnittstellen wirken auf mit Visual Basic und Co. aufgewachsene Entwickler mitunter etwas befremdlich. Marburger und Post führen erste Experimente am Desktop durch und zeigen die Unterschiede zwischen Stateful und Stateless Widget en vivant. Nach der Realisierung einer kleinen Login-Maske wendet sich das Buch den verschiedenen Stylesheets zu, die Flutter die „Emulation“ des Aussehens von Android- und iOS-Widgets ermöglichen.
Darauf folgt die Layoutengine von Flutter: Insbesondere bei der Cross-Plattform-Entwicklung ist es wichtig, dass Formulare ihre Inhalte dynamisch neu ausrichten können. Die beiden Autoren setzen hier konsequent auf praktische Beispiele; die Arbeit mit ListView und Co. kommt ebenfalls in diesem Sektor zur Sprache.
Neben der reinen Lehre der komplett automatischen Anpassung gehen die Autoren auch auf Methoden ein, um die verschiedenen Zielsysteme – teilweise sehr trickreich – voneinander zu unterscheiden: Der Weg zur Unterscheidung von 7- und 10 Zoll-Tablets ist lesenswert.
Nach dem Durchackern dieser – trotz ihrer Komplexität grundlegenden – Themen folgt die Erzeugung komplizierter Benutzerschnittstellen, die – neben Interaktivität – auf die Unterteilung von Widget und Co gemäß den flutterisch korrekten Prinzipien setzen. Animationen besprechen die Autoren ebenso wie die Verwendung des Canvas-Steuerelements, das Entwicklern das „Zeichnen“ mehr oder weniger beliebiger Inhalte auf ein spezielles Containerwidget ermöglicht.
Assets, Lokalisation und mehr
Seit der Zeit von Qt und Co. gilt, dass es im Bereich der Cross-Plattform-Entwicklung einige klassische Friktionspunkte zu umschiffen gilt. Die Auslieferung von Asset-Dateien und die automatische Anpassung der Anzeigesprache sind zwei derartige Probleme – die in Flutter enthaltenen Werkzeuge zur Lösung kommen im dritten Teil des Buchs zur Sprache. Cloud-Interaktion (lies: HTTP) und das Vorhalten von Informationen in lokalen Speicherbereichen erwähnt das Werk hier ebenfalls.
Insbesondere im Mobilbereich gilt, dass ab einer gewissen Applikationskomplexität die Interaktion mit nativen Elementen nicht vermeidbar ist. Nach Gedanken zu Kamerazugriff, GPS und Co. spielt das Buch Methoden durch, um native APIs für Flutter sichtbar zu machen.
Den Abschluss bilden dann verschiedene Methoden, um die Applikationsqualität nach der Auslieferung konstant zu halten. Neben Logging und Methoden zur Integration von Analytics-Diensten geht der Text auch (kurz) darauf ein, wie fertige Flutter-Programme für Android oder iOS zu verpacken sind. Überlegungen zu Unittests und dem Performance Profiler helfen, eventuell auftretende Probleme effizient zu bekämpfen.
Fazit
„Flutter und Dart“ liefert Lesern, die bisher mit anderen Plattformen gearbeitet haben, einen bequemen Weg zur Aktualisierung ihrer Kenntnisse. Wer sich schon immer mit der Technologie auseinandersetzen wollte, bereut den Kauf auf keinen Fall.

Autor: Marc Marburger, Uwe Post
Titel: „Flutter und Dart. Das umfassende Handbuch“ 633 Seiten, gebunden
Preis: 49,90 Euro
Verlag: www.rheinwerk-verlag.de/6152, 2. Auflage, 2025
ISBN: 978-3-367-10972-2
Sprache: Deutsch