Flutter 2022 - Roadmap und Strategie
Im Bereich Roadmaps und Planungen sind große Projekte gerne mal etwas still. Anders ist dies im Bereich Flutter, hier hat man vor kurzem eine Roadmap für das gesamte Jahr 2022 veröffentlicht und mit der Community geteilt. Außerdem geht man auf die Art und Weise ein wie Flutter gemeinsam weiterentwickelt werden soll. Denn natürlich wird das Projekt von Google getragen, aber eben auch von der besagten Community. Das GitHub Projekt hat mittlerweile knapp 1000 Contributor, was sich durchaus sehen lassen kann.
Doch damit zurück zur Roadmap. Auf dem Desktop soll nach Windows auch der Support für Linux und macOS auf dem Stable-Channel landen und dies auch in besagter Reihenfolge. Im Web soll es vor allem im Bereich der Performance, Plugin-Kompatibilität und Accessibility Verbesserungen geben. Zusätzlich soll die Mischung von Flutter und Non-Flutter Content in Webseiten massiv vereinfacht werden.
Im Framework an sich wird der Material 3 Support erweitert und im Bereich der Texteingabe, Textselektion und generell Textverarbeitung soll es quasi auf allen Plattformen Optimierungen und neue Features geben. Ein Stichwort wäre hier die Handschrifterkennung in iPadOS. Kontextmenüs und Menüleisten für den Desktop sind ebenfalls ein Thema, genauso wie erste Experimente mit Multi-Window Support.
Abschließend wird es natürlich Updates von Dart, als Sprache die das Ganze erst möglich macht, geben. Extrem spannend finde ich das Thema Jank, also kurze Lags beim Nutzen der UI. Hier hat man grundlegende Fehler entdeckt und tatsächlich das gesamte Grafik-Backend und die Ideen dahinter komplett neu entwickelt. In 2022 wird zuerst iOS mit dieser neuen Technik bestückt und mit den daraus folgenden Ergebnissen will man das Ganze weiterentwickeln und auf die anderen Plattformen bringen.
Eine sehr angenehme High-Level-Sicht auf Flutter im Jahre 2022. Man erkennt die Richtung, muss aber nicht 1000 Issues wälzen und man fühlt sich als Teil der Community integriert. Meiner Meinung nach ein guter Weg, um die generelle Planung einer Sprache / eines Frameworks mit der Community zu teilen.
Flutter 2.10 erschienen
Gestern gab es eine neue Flutter Version, welche vor allem einen Hauptfokus hat und dieser lautet Stable Windows Support. Eine Durchaus sehr relevante Information. Abseits von der Möglichkeit auf dem Stable Branch von Flutter Windows Builds erstellen zu können, wurde auch das Tooling, die Integration und das gesamte Setup massiv verbessert. Im Rahmen des unten eingebundenen Youtube Videos wird unter anderem gezeigt wie man von der Standard Counter App, zu einer App mit einer an Windows angepassten UI kommt, diese als Release Version baut und sogar in ein installierbares Format bringt. Das Ganze ist binnen kürzester Zeit erledigt und die installierbare App ist sogar mit dem Windows Store kompatibel.
Weiterhin fokussiert sich das Update auf Performance Optimierungen. Unter iOS gab es massive Verbesserungen beim Rendering und einige Animationen laufen nun flüssiger. Android Entwickler erhalten mehr automatische Hilfen bei Fehlern und die Standardeinstellungen für Projekte wurden auf den neusten Stand gebracht. Im Web gab es Verbesserungen bei Textfeldern und der Overhead bei der Nutzung von nativen HTML Elementen wurden minimiert.
Der Material 3 Support wird außerdem erweitert, sodass nun Themes mit nur einer Farbe als Basis generiert werden können. Außerdem wurden über 1000 neue Icons hinzugefügt. Abschließend dürfen sich Entwickler über Verbesserungen bei den Integration Tests und den Dev Tools freuen und natürlich gab es wieder diverse Bugfixes.
Google Developer Library - Ressourcen zu Android, Flutter und vielem mehr
Es gibt viele Tools und Ressourcen im Bereich der vAndroid und Flutter Entwicklung. Da kann man leicht der Überblick verlieren und vor allem ist es schwer aktuelle Inhalte zu finden, welche den derzeitigen Best Practices entsprechen.
In diesem Kontext bin ich vor wenigen Tagen über die Google Developer Library gestolpert. Eine Plattform welche Libraries, Blog Beiträge und weitere Inhalte zu diverse Themen liefert. Aktuell gibt es neben Android und Flutter noch Firebase, Angular, Google Cloud und Machine Learning. Die Inhalte können nach euren Vorlieben gefiltert und durchsucht werden.
Ich kannte diese Plattform bis dato noch nicht und werde auf jeden Fall mal etwas stöbern gehen. Denn dort gibt es sicherlich noch das eine oder andere zu entdecken und zu lernen.
Device Marketing Names - Produktnamen / Marketing-Namen in Flutter auslesen
Wie bereits vor einigen Wochen erwähnt habe ich ein kleines Flutter Package geschrieben, welches es euch erlaubt den Produktnamen / Marketing-Namen eines Android oder iOS Gerät auszulesen. Dabei kann das Gerätemodel, für welches der Name ermittelt werden soll, entweder das aktuell genutzte Gerät sein oder es wird ein bereits bekanntes Gerätemodel eingegeben.
Es gibt zwar schon ein paar Packages / Plugins die in diese Richtung gehen, allerdings benötigen einige eine Internetverbindung oder bringen eine komplette SQLite Library und die entsprechenden Abhängigkeiten mit sich. Dies wollte ich vermeiden, weswegen ich direkt nutzbaren Code für die Lookups generiere. Dafür habe ich Device Identifiers geschrieben, welches bis dato Dart und Kotlin unterstützt. Auf diese Art hat man einen schnellen Lookup der immer funktioniert und keine umfangreichen Abhängigkeiten mitbringt.
Die Lookup Daten werden ca. einmal im Monat aktualisiert, sodass das Package vor allem im Android Bereich die aktuellsten Informationen liefern kann. Das Package kann auch für Flutter im Web genutzt werden, hier gibt es allerdings direkt den ermittelten Browser Name weiter, welcher von device_info_plus open_in_new) ausgelesen wurde. Das Auslesen des aktuellen Gerätemodels wird übrigens auch von device_info_plus übernommen.
Das Package ist relativ simpel und der größte Teil der Arbeit ist die Bereitstellung der eigentlichen Daten. Es liegt aktuell in Version 0.3.1, was der fünfte Release ist. Nach dem initialen Release, welcher Android und iOS unterstützte, wurde in den folgenden Versionen der Web Support hinzugefügt. Außerdem gab es kleinere Fehlerbehebungen und Optimierungen, sowie Updates der Lookup Daten.
Solltet ihr Ideen haben wie man das Package noch erweitern oder verbessern kann oder habt ihr Fragen, dann meldet euch einfach in den Kommentaren.
Material Design 3 - Neuerungen und Optimierungen
Das Material Design UI Konzept von Google wurde bereits mehrfach hier im Blog erwähnt und heute gibt es mal wieder einen guten Grund dafür. Mit Android 12 gibt es bekanntlich mehr Individualisierungsmöglichkeiten was die Farbgebung der System UI angeht. Hier geht auch Material Design mit und zwar unter der Version 3.
Material Design 3 soll sich an das neue Konzept anpassen können und bringt dafür unter anderem geänderte Farbdefinitionen mit sich. Aber auch im Bereich der Typography gab es Optimierungen. Hier wurden Namen vereinfacht und die Anzahl der Standard-Schrifttypen verkleinert. Diverse UI Komponenten wurden ebenfalls angepasst. Vor allem die Bars (Top App Bar und Navigation Bar) kommen nun mit einem durchaus anderem Stil daher. Doch auch die Buttons, darunter auch der Floating Action Button, sind nun flexibler nutzbar und kommen in einem neuen Gewand daher.
Flutter 2.8 erschienen
Bereits vor ein paar Tagen erschien eine neue Flutter Version. Das Framework hat nun die Versionsnummer 2.8 auf dem Stable Channel. Damit einher geht ein Update der Programmiersprache Dart auf die Version 2.15.
Dieses Update fokussiert sich auf die Performance des Frameworks und dabei vor allem auf Optimierungen im Mobile Bereich. Weniger Speicherverbrauch, flüssigere grafische Abläufe und ähnliche Dinge sollen durch das Update möglich werden. Außerdem ist die Anbindung an Firebase und die Google Cloud verbessert worden. Dadurch sollen Entwickler schneller mit den genannten Backend Lösungen arbeiten können.
Ebenfalls spannend ist, dass die 2D Game Engine Flame, welche auf Flutter aufsetzt, auch einen Versionssprung gemacht hat. Hier hat man nun die stabile Version 1.0 veröffentlicht, was interessierte Spieleentwickler vielleicht spannend finden. Die Engine ist modular aufgebaut und ich selber plane sie mir im kommenden Jahr mal näher anzusehen.
Generell bringt die neue Flutter Version wenige sichtbare Änderungen, aber dies ist auch gar nicht nötig. Nicht jeder Release muss neue Inhalte bringen, denn ein Framework muss allem voran eine solide und performante Basis schaffen. Damit können wir Entwickler dann unsere Aufgaben erfüllen und Apps entwickeln. Ich selbst habe bereits seit einiger Zeit auf der Version 2.8 gearbeitet, da ich seit längerem auf dem Beta Channel unterwegs bin. Bis dato sind mir keine Nachteile oder Probleme aufgefallen. Insofern sollte einem Update eher wenig im Wege stehen.
Flutter - Entwickler Umfrage Q4 2021
Schon wieder ist ein viertel Jahr vergangen und das Flutter Team fragt nach eurem Feedback. Selbiges kann im Rahmen einer kurzen Umfrage – ich habe ca. 5 Minuten gebraucht – abgegeben werden. Feedback dieser Art mag in manchen Umgebungen unterzugehen, aber im Flutter Kontext fühle ich mich zumindest gehört und kann jedem Entwickler in diesem Bereich nur empfehlen diese paar Minuten zu investieren.
Nur mit Feedback von aktiven Entwicklern können sich Sprachen und Frameworks aktiv in eine Richtung entwickeln die für euch relevante Änderungen bringt. Entsprechend ist der Kosten / Nutzen aufwand relativ gering, wenn man bedenkt das ihr hier mehr oder weniger direkten Einfluss auf die Basis eures Daily Doings nehmen könnt.
Den Link zur Umfrage findet ihr wie gewohnt in den Related Links. Bei Fragen oder Anregungen meldet euch gerne in den Kommentaren.
Device Identifiers - Android und iOS Gerätenamen Mappings
Im Rahmen meiner Mitarbeit an den Flutter Plus Plugins open_in_new gab es die Anfrage die Produktnamen / Marketing-Namen für Android und iOS Geräte ausgeben zu können. Da dieser Use Case vermutlich eher für eine kleine Anzahl von Entwicklern wichtig ist, wurde entschieden diese Funktionalität nicht direkt in die Plus Plugins zu integrieren.
In diesem Bereich gibt es zwar schon Lösungen, aber einige basieren auf nativen Android / iOS Libraries und einige benötigen eine SQLite Library. Diese Anforderungen gefielen mir nicht, da man am Ende lediglich ein Mapping vom Gerätemodel auf den Produktnamen braucht. Das Model kann relativ einfach ausgelesen werden (z.B. via dem Flutter Plugin device_info_plus open_in_new) und alles weitere kann nicht nur ausschließlich auf der Dart Ebene erledigt werden, sondern das auch mit relativ einfachen Mitteln.
Am Ende braucht man wie oben erwähnt einfach nur eine Map der Daten, welche die Übersetzung von Model zu Name ermöglicht. Dies zu programmieren ist natürlich trivial, auch wenn man auf Dinge wie Lazy Loading achten sollte. Das Problem ist hier einen korrekten und möglichst vollständigen Datensatz zu haben.
Flutter - Einfache Navigation mit go_router
Navigation in Apps ist ein wichtiges Thema, denn auch wenn die Flows relativ simpel erscheinen, so gibt es mit Deep-Links, dem Handling von Fehlern und generell konditionalen Abläufen viele Dinge die die Navigation verkomplizieren können.
Im Flutter Kontext hat man darüber hinaus noch das Problem mobile Plattformen, Desktopsysteme und auch das Web bedienen zu wollen. Um hier alle zufrieden zu stellen wurde mit Navigator 2.0 open_in_new ein umfangreiches, aber auch sehr komplexes Konstrukt erschaffen. Selbiges ermöglicht es quasi alles umzusetzen was man möchte, aber dafür muss man auch für mitunter simple Abläufe etwas tiefer in die Code-Trickkiste greifen.
Damit der geneigte Entwickler aber nicht verzweifelt, wurde von einem der Flutter Product Manager mit go_router ein Flutter Package entwickelt, welches die Nutzung von Navigator 2.0 vereinfachen aber nicht einschränken soll. Ich plane aktuell das Package für laufende und kommende Projekte einzusetzen, denn erst Recherchen stimmen mich sehr zuversichtlich. Ich selbst hatte bis dato noch nicht viele Probleme mit der Navigation, aber einfach waren die Abläufe meist auch nicht und vor allem im Bereich Deep-Links könnte ich meine Apps sicherlich noch optimieren.
Flutter Apprentice - Lehrbuch kostenlos verfügbar
Etwas Neues zu lernen ist immer spannend aber auch herausfordernd. Auf welche Art man etwas am besten lernt hängt immer stark von der jeweiligen Person ab. Der eine oder andere lernt gerne mit Büchern während andere z.B. Tutorials oder Videos bevorzugen. Sofern ihr zur ersten Gruppe gehört und etwas im Flutter Kontext lernen wollt, dürfte es euch vielleicht interessieren, dass das Buch Flutter Apprentice aktuell kostenlos zu haben ist.
Im Rahmen einer Zusammenarbeit zwischen Flutter und Razeware gibt es das Buch bis zum 06. Januar 2022 kostenlos für euch. Zusätzlich könnt ihr euch mit anderen Lesern vernetzen und so gemeinsam lernen. Alle weiteren Informationen gibt es in den Related Links. Das Buch, wie auch die weiteren Referenzen sind wie in diesem Kontext gewohnt in englischer Sprache verfasst.