Flutter 3.3 & Dart 2.18 erschienen
Während ich gerade mit den letzten Schritten des Full-Tests für meine Tessa App beschäftigt war, erschien Flutter 3.3. Was zum einen Fluch und zum anderen Segen ist, dazu aber mehr im Status Update zur Tessa App 2.0, welches zeitnah erscheinen wird.
Heute soll es um die neue Flutter Version gehen und was sie eigentlich mit sich bringt. Eine der großen Änderungen, vor allem für den Bereich Desktop, ist die Möglichkeit mit einer SelectableArea
einen kompletten Bereich selektierbar zu machen. Ebenfalls schön ist der verbesserte Support für Trackpads.
Bei der Eingabe von Text ist es nun möglich via Scribble
handschriftlichen Input zu liefern, der direkt in Text übersetzt wird. Außerdem ist es nun möglich den Textinput spezifischer zu verarbeiten, da man nun in etwaigen Callsbacks auch das Delta erhält.
Für mich persönlich ist der erweiterte Material 3 Support sehr wichtig, denn auf Material 3 setze ich bei der bereits erwähnten neuen Version der Tessa App. Dort ist vor allem der Support für die neuen IconButtons
, Chips
und unterschiedliche Arten der AppBar
erwähnenswert. Ebenfalls wichtig sind aber auch diverse Fehlerbehebungen und Optimierungen des bereits vorhandenen Material 3 Supports. Ich selber hatte dort einige Probleme und diese scheinen nun behoben.
Abseits von neuen Features wurde ein weiteres Mal an der Performance Schraube gedreht, diverse kleinere plattformspezifische Änderungen wurden durchgeführt und sowohl die Flutter DevTools, wie auch die VS Code Extension wurden optimiert.
Device Marketing Names & Device Identifiers Status Update
Nach ein paar ruhigen Tagen geht es nun wieder aktiver zur Sache hier im Blog. In den letzten Wochen vor meinem Urlaub habe ich mich relativ umfangreich um diverse meiner Projekte gekümmert. Im Folgenden gibt es ein kleines Update zum Status von selbigen.
Den Anfang machen Device Marketing Names (Kotlin Package & Dart / Flutter Package) & Device Identifiers, meine Projekte zum Thema Gerätenamen auslesen. Diese erhielten vor ca. drei Wochen ihre regelmäßigen Updates und wurden mit neuen Daten und minimalen Anpassungen versehen. Die Updates wurden wie gewohnt über die bekannten Package Repositories verteilt und der Code ist auf GitHub verfügbar. Die nächste Aktualisierungsrunde wird bereits in ca. einer Woche stattfinden. Alles weitere zu diesen Projekten gibt es im Projekte Bereich.
Sowohl das Tool zum generieren, wie auch die Kotlin und Flutter Library, welche die Funktionalität für Clients zur Verfügung stellen, sind mittlerweile als stabil anzusehen. Kleinere Änderungen, Erweiterungen und natürlich Updates der Daten gibt es entsprechend, aber umfangreichere Anpassungen an der API sollte es keine mehr geben. Den Prozess des monatlichen Datenupdates konnte ich darüber hinaus auch noch etwas beschleunigen, sodass diese Projekte gut gepflegt werden können, ohne zu viel Zeit zu benötigen. Dies ist mir aktuell sehr wichtig, denn ich möchte laufenden Projekte gut pflegen, aber ebenso auch Zeit haben neue und umfangreiche Projekte zu starten.
In den nächsten Tagen werden weitere Informationen zum Status meiner Projekte erscheinen, denn aktuell möchte ich für euch und auch für mich selbst einen roten Faden in die Entwicklung von selbigen bringen. Dies plane ich schon seit längerem, denn ich möchte alle meine öffentlich verfügbaren Projekte mit nachvollziehbaren Entwicklungszyklen ausstatten. Dies erlaubt mir hoffentlich laufende, wie auch neue Projekte, gut zu pflegen und am Leben zu halten.
Flutter Vikings Konferenz - Zweiter Tag gestartet
Da habe ich doch glatt vergessen die Flutter Vikings Konferenz hier im Blog noch einmal zu erwähnen. Selbige läuft aktuell in Oslo, kann von interessierten Nutzern aber auch online verfolgt werden. Dies ist extrem einfach, denn die gesamte Playlist ist auf Youtube zu finden. Dort gibt es sowohl die Sessions des gestrigen Tages, wie auch Live Programm am heutigen Tag. Aufgeteilt auf drei Räume gibt es diverse interessante Inhalte. Das Programm und natürlich auch die Playlist habe ich in den Related Links hinterlegt.
Die ersten Talks des heutigen Tages beginnen übrigens genau jetzt. Ich werde selbige auf jeden Fall nebenbei während der Arbeit verfolgen, denn es gibt dort definitiv das eine oder andere zu lernen. Ebenfalls spannend ist übrigens auch das pünktlich zur Konferenz Flutter 3.3 und Dart 2.18 erschienen sind. Zu den neuen Releases wird es in den nächsten Tagen noch einen gesonderten Beitrag geben.
Midyear 2022 Flame Game Jam
Während ich weiter kleine Schritte im Bereich der Spieleentwicklung mache, behalte ich natürlich die Engine in welcher ich aktuell entwickle im Blick. Selbige basiert auf Dart und Flutter und hört auf den Namen Flame open_in_new. Bereits seit einiger Zeit veranstalten die Entwickler von Flame Game Jams und bald ist es wieder soweit. Vom 19. bis 21. August findet der Midyear 2022 Flame Game Jam statt und interessierte können alleine oder gemeinsam via itch.io versuchen ein Spiel auf die Beine zu stellen.
Ich selbst habe schon an dem einen oder anderen Game Jam teilgenommen, sowohl offline, wie auch rein online. Ich kann nur sagen, dass wenn einen das Thema interessiert und man vielleicht noch ein paar gleichgesinnte im Bekanntenkreis hat, es lohnt sich. Es ist eine Herausforderung und es wird definitiv nicht immer ein funktionsfähiges Spiel entstehen, aber man lernt viel und allem voran macht es verdammt viel Spaß. Ich vermute am genannten Wochenende werde ich nicht genug Zeit haben um selber teilzunehmen, aber ich werde das Event verfolgen und versuchen im genannten Zeitraum selber die eine oder andere Stunde in die Entwicklung meines Spiels zu stecken.
Droidcon 2022 - Videos der Sessions online verfügbar
Falls es euch so geht wie mir und ihr dieses Jahr nicht live vor Ort wart bei der Droidcon in Berlin, dann interessiert es euch vielleicht das nun alle Sessions in Form von Videos online sind. Die Inhalte gibt es direkt auf der Droidcon Webseite.
Sofern ihr im Bereich der mobilen Entwicklung unterwegs seid, egal ob nativ für Android oder z.B. im Cross-Platform Bereich mit Flutter, ist vielleicht das eine oder andere Video für euch dabei. Folgt einfach den Related Links und stöbert eine Runde bei Interesse. Auch die Inhalte der vergangenen Jahre findet ihr dort.
Device Marketing Names & Device Identifiers Updates
Es gibt wieder neue Versionen meiner Device Names Libraries. Sowohl das Tool zur Generierung (Device Identifiers), wie auch meine beiden Libraries (Device Marketing Names - Dart / Flutter und “device-marketing-names-kotlin” ), die die dazugehörigen Client Funktionen für Dart und Kotlin implementieren, wurden aktualisiert.
Für die beiden Client Libraries bedeutet dies ein paar aktualisierte Abhängigkeiten und vor allem eine aktualisiertes Datenset. Umfangreichere Änderungen gab es eher im Tool, welches ich zur Erstellung der Datensets nutze. Hier hab ich eine Funktionalität eingebaut die mir schon seit längerem fehlte. Selbige ist die Formatierung und Optimierung des erstellten Kotlin Codes. Denn auf Grund der Größe der Datei dauerte dies in der IDE sonst immer unnötig lange und ich will das der Code direkt und ohne unnötige Arbeit nutzbar ist. Dies ist mit dem aktuellen Update nun möglich und wie hier zu lesen war der Aufwand auch durchaus gering.
Sofern ihr also eine Dart oder Kotlin Library braucht, die die Modelbezeichnung eures Smartphones oder Tablets in einen für den Nutzer verständlichen Marketing Namen umwandelt, dann schaut euch meine Libraries doch einfach mal an. Alle relevanten Links sind wie gewohnt in den Related Links zu finden.
Kotlin und Dart Code via GitHub Action formatieren
Code, egal wie gut er logisch geschrieben ist, ist ohne eine ordentliche Formatierung problematisch. Man kann es vergleichen mit dem besten Buch aller Zeiten, welches aber quasi unlesbar ist, weil die Schriftgröße auf drei gesetzt wurde.
Bei den Programmiersprachen bin ich bekanntlich in den Bereichen Dart und Kotlin unterwegs und auch wenn normalerweise die IDE und die integrierten Tools das Formatting übernehmen, so gibt es doch Situation wo eine schnelle Formatierung via CLI hilfreich ist. Als konkretes Beispiel hätte ich hier die CI, welche z.B. Code generiert, optimiert oder vor dem Release von Libraries und Apps für Ordnung sorgt.
Tessa App - Version 2.0 steht vor der Tür
Eines von meinen verschiedenen laufenden Projekten ist die Tessa App. Eine App die als Companion-App für Reiter gedacht ist. Initial entwickelt für meine Frau, wurde das Feature-Set recht umfangreich und ich entschied mich sie für jedermann über den Play Store open_in_new verfügbar zu machen. Die App wird dort nun seit längerem mit Updates und kleineren Erweiterungen versehen.
Nun steht nach längerer Entwicklungsphase ein umfangreiches Update mit neuen Funktionen, einer modernisierten UI und verbesserter Performance vor der Tür. Die UI wird dabei auf Googles Material Design 3 open_in_new basieren, welches ich entsprechend in Flutter umgesetzt habe. Flutter 3 open_in_new unterstützt bereits diverse Material 3 Komponenten und die restlichen habe ich selber entsprechend angepasst. Im Bereich der Features wird es möglich sein mehrere Aktivitäten an einem Tag hinzuzufügen und der Bereich für Pferde-Daten wurde erweitert, sodass man diverse relevante Gesundheitsdaten hinterlegen kann. Im Bereich der Performance erfolgten massive Verbesserungen und ebenfalls umfangreiche Bugfixes. Auf die konkreten Details und weiteren Neuerungen werde ich im Rahmen der Release Notes eingehen.
Flutter Plugins & Packages - Eine neue News-Sammlungen
Flutter bietet eine große Menge an Plugins und Packages (via pub.dev open_in_new), die euch bei der Entwicklung eurer Apps helfen sollen. Ich selber nutze einige davon und habe auch schon selber welche geschrieben, weitere Informationen dazu im Projekte Bereich. Da die Auswahl aber sehr groß ist und man manchmal gar nicht genau weiß was man braucht, starte ich heute eine News-Sammlungen zu Plugins und Packages die ich viel nutze.
Die Begriffe Plugin und Package werde ich vermutlich beide benutzen, auch wenn ich versuche ein einheitliches Wording zu verwenden. Technisch ist der Unterschied bei diesen beiden übrigens wie folgt definiert. Ein Flutter Plugin interagiert auf die eine oder andere Weise mit nativem Code und stellt z.B. ein Interface für schon vorhandene native Bibliotheken zur Verfügung. Während ein Dart Package ausschließlich in Dart entwickelt wird. Hier könnte man als Beispiel Packages nennen, die neue Widgets einführen oder mathematische Formeln in Dart implementieren.
I'm a coder - Spaß beim Bugfixing
Softwareentwicklung bedeutet neben neuen Features natürlich auch das auffinden und beheben von Bugs und Problemen. Nun sind Projekte groß, teils mit anderen zusammen entwickelt und entsprechend hat man einen mehr oder weniger tiefen Einblick in die verschiedenen Teilbereiche einer Software.
Umso befriedigender ist es eine grobe Beschreibung von einem Problem zu hören und direkt eine Idee zu haben, wo das Problem liegen könnte. Liegt man dann auch noch komplett richtig, ist dies meiner Meinung nach eines der besten Gefühle für Entwickler. Denn es zeigt das man den Code nicht nur kennt, sondern auch das man ihn verstanden und durchdrungen hat. Soll heißen man weiß nicht nur was passiert und wo es passiert, sondern auch warum und welche generellen Abläufe dahinter stecken.
Ebenfalls sehr angenehm empfinde ich es, wenn man vorhandene Konzepte und Strukturen in neuen Bereichen problemlos einsetzen kann. Da man sie flexibel genug aufgebaut hat, sodass auch andere Einsatzzwecke als der initial geplante umgesetzt werden können. Dabei kann es je nach Situation natürlich möglich sein das minimale Erweiterungen nötig sind, doch wenn die Grundideen und Abläufe weiterhin funktionieren fühlt man sich durchaus bestätigt.
Da man bei der Softwareentwicklung am Ende nicht zwangsweise etwas in der Hand hält und auch das Feedback der Nutzer oft sehr indirekt ist, finde ich es wichtig aus derartigen Dingen Freude zu ziehen. Denn am Ende sollte man ja auch Gefallen an dem finden was man tut, egal ob professionell oder im privaten Kontext. Insofern genießt den nächsten Bugfix oder das nächste Refactoring vielleicht einfach und freut euch darüber das ihr wisst was zu tun war, statt euch über eventuell blöde Fehler zu ärgern. Ein bisschen Fluchen zum abreagieren schadet hin und wieder aber natürlich trotzdem nicht.