Open Source Event Hacktoberfest gestartet
Der Oktober hat begonnen und für Entwickler mit Interesse im Open Source Bereich bedeutet dies interessante Möglichkeiten. Denn wie schon in den letzten Jahren ist auch dieses Jahr das Hacktoberfest wieder aktiv.
Soll heißen auf GitHub open_in_new und GitLab open_in_new gibt es in diversen teilnehmenden Projekten Issues mit dem Label Hacktoberfest. Ob ein Projekt teilnimmt ist dem Maintainer überlassen. Durch das abarbeiten solcher Issues könnt ihr Punkte sammeln und vielleicht die eine oder andere Kleinigkeit als Belohnung bekommen. Doch eigentlich geht es eher darum etwas für die jeweiligen Projekte zu tun, gemeinsam etwas zu erreichen und voneinander zu lernen.
Ich bin schon seit langem am überlegen etwas aktiver im Kontext der Flutter Community zu werden und dort bei den Plus Plugins open_in_new zu helfen. Leider habe ich bis dato nicht die Zeit gefunden, nehme dieses Event nun aber als Anlass etwas mehr zu tun. Falls auch ihr Interesse habt schaut doch generell mal, ob eure favorisierten Projekte vielleicht teilnehmen oder schaut wie ich mal im Plus Plugins Repository vorbei.
Die Aktion geht wie der Name schon sagt bis Ende des Monats und alles weitere findet ihr in den Related Links. Vergesst nicht euch auf der offiziellen Webseite anzumelden, damit eure PRs auch gezählt werden.
Flutter 2.5 erschienen
Bereits vor etwas mehr als einer Woche wurde eine neue Flutter Version veröffentlicht. Flutter 2.5 ist somit die aktuelle Stable Major Version und ein Upgrade eurer Entwicklungsumgebung wäre empfehlenswert. Ich selbst bin schon etwas länger mit der besagten Version unterwegs, da ich aktuell mit dem Beta Channel von Flutter arbeite.
Doch nun zu den eigentlichen Verbesserung. Dort gibt es vor allem im iOS Bereich starke Performance Verbesserungen und eine massive Reduzierung von kleineren Lags bei Animationen und ähnlichem. Zusätzlich wird nun Apple Silicon Support geboten. Verbessert wurde außerdem die Art und Weise wie und wann der Garbage Collector arbeitet. Auch dadurch sollen Probleme und Lags weiter minimiert werden. Sofern ihr auf die Kommunikation zwischen der Plattform selbst und Flutter angewiesen seid, dürfte es euch freuen zu hören das auch die Platform Channels wesentlich schneller geworden sind.
Tessa App - Update mit Dark Mode und anpassbaren Kategorien
Es gibt wieder neues von mir aus der Flutter Welt. Meine App Tessa hat ein Update erhalten. In dieser Version fügte ich einen Dark Mode und anpassbare Kategorien hinzu. Natürlich wurden auch diverse Fehler behoben und einige Anpassungen an der UI vorgenommen. Letzteres sorgt vor allem für einen modernen Look im Bereich der Snackbars. Ebenfalls verbessert wurde die Performance.
Im Rahmen des Updates habe ich das erste Mal mit Flutter in Verbindung mit einem dedizierten Dark Mode gearbeitet und ich bin durchaus zufrieden. Generell musste ich lediglich mein allgemeines Theme in ein helles und ein dunkles aufteilen und der Großteil war geschafft. Natürlich muss man sich dann noch um eventuelle manuelle Einstellungen kümmern, aber extrem vieles lief einfach so. Selbst UI die von Third Party Libraries gebaut wird, konnte bis auf kleine Ausnahmen ohne Änderungen verwendet werden. Hier merkt man das Flutters Material Komponenten alle aus einem Guss kommen.
Bedenken sollte man allerdings auch die nativen oder statischen Komponenten. In diesem Bereich habe ich vor allem kleinere Anpassungen an den genutzten Bildern vorgenommen und den initialen Splash Screen angepasst. Hierfür habe ich innerhalb von Android selbst die gegebenen Möglichkeiten genutzt. Da zu diesem Zeitpunkt Flutter selbst noch nicht aktiv ist, ist der Splash Screen immer gemäß des System Themes gesetzt und manuelle App Einstellungen greifen dann nachdem der Flutter Kontext geladen ist.
Interessante Flutter Tools und Libraries
Während ich mit Flutter unterwegs bin, suche ich natürlich immer mal wieder nach neuen Tools und Libraries. Aktuell fehlt mir zwar etwas die Zeit wirklich viel neues auszuprobieren, aber ich wollte mal mit euch teilen was noch so auf meiner TODO Liste steht.
Den Anfang macht Monarch. Wer Widgets gerne losgelöst von Daten bauen möchte, der sollte mal einen Blick auf Monarch werfen. Dieses Tool möchte euch helfen isoliert und schnell eigene Widgets zu erstellen und das ohne unnötigen Overhead.
Weiter geht es mit Mason. Ein relativ neues Tool, welches euch bei der Generierung von Dateiinhalten und auch ganzen Projekten hilft. Ihr erstellt euch sogenannte Bricks, welche dann konfiguriert werden und folgend Dateien, Ordner und ganze Strukturen erzeugen. Sehr praktisch ist dies z.B. bei der Projekterstellung.
Flutter in Production mit Tessa - Reit-Assistent
Ich arbeite gerne mit Flutter, migrierte meine internen Java & Android Projekte und schreibe quasi täglich die eine oder andere Zeile Code. Doch ist Flutter auch was für den echten produktiven Einsatz? Diese Frage kann ich seit kurzem nun auch offiziell mit einem klar ja beantworten. Grund dafür ist meine erste Flutter App im Google Play Store (Tessa - Reit-Assistent open_in_new), welche durchaus umfangreich geworden ist und mit Dart und Flutter als Basis sehr gut funktioniert.
Der Kontext ist mit einer Companion App für Pferdebesitzer eher außerhalb meiner Kernkompetenzen, aber genau dies zeigt mir noch mehr das man mit Flutter Apps entwickeln kann, die den eigenen Wünschen oder den Wünschen eines Auftraggebers entsprechen. Grund für das Thema der App ist meine Frau, welche mit dem Reiten ein Hobby gefunden hat, welches durchaus komplex sein kann.
Google I/O startet heute
In nicht einmal einer Stunde ist es soweit und die diesjährige Google I/O öffnet digital ihre Pforten. Es wird wie gewohnt neues zu Google Software, wie z.B. Android und Flutter, geben, aber vermutlich auch Informationen zu neuer Hardware, z.B. in Form von neuen Pixel Geräten.
Ich bin gespannt welche Änderungen es im Android und Flutter Bereich gibt, denn sowohl als Nutzer, wie auch als Entwickler habe ich mit beiden Bereichen täglich zu tun. Als Nutzer bin ich außerdem auf Informationen zu neuen Pixel Geräten gespannt, denn ich überlege aktuell mein etwas betagtes Handy zu erneuern und Pixel Geräte zu realistischen Preisen wären da auf jeden Fall eine Option.
Im Rahmen der I/O gibt es diverse Aktionen und Aktivitäten, welche ihr auf der offiziellen Webseite findet. Den Link findet ihr in den Related Links. Den Live Stream der Keynote habe ich im unteren Teil der News für euch eingebunden.
OnUpgrade - Mein erstes Dart / Flutter Package
Während es für fast alles ein Plugin / Package gibt im Dart / Flutter Kontext, existieren natürlich trotzdem die kleinen Ausnahmen die einem fehlen. Für diese Dinge schreibt man dann selber Code, verwendet ihn in der nächsten App wieder und entscheidet sich dann vielleicht eine Library daraus zu machen.
Selbiges tat ich vor kurzem und in diesem Zuge habe ich mein erstes Dart / Flutter Package veröffentlicht. OnUpgrade open_in_new soll dem Entwickler helfen eventuell nötige Migrationen bei App-Upgrades durchzuführen oder den Nutzer über neue Funktionen zu informieren. Das Package stellt dabei die Logik zum Speichern, Vergleichen und Auswerten der zuletzt installierten und aktuell genutzten App-Version zur Verfügung. Was im Falle eines Updates ausgeführt wird, wie ein eventueller Dialog aussieht oder wie der generelle weitere Ablauf ist, entscheidet der Entwickler.
Dart - Cross-Platform Scripting-Helfer
Ich mag kleine Scripting Lösungen die mir Arbeit abnehmen und das nicht nur auf meinem Linux Server. Auch unter Windows möchte ich bei der Entwicklung, beim News erstellen und an anderen Stellen, kleine und einfach auszuführende Helfer haben.
Unter Windows gibt es mit der CMD und Powershell gleich zwei Lösungen, welche ich beide ungern nutzen möchte. Nicht weil sie schlecht sind oder dergleichen, sondern einfach weil ich nicht noch eine Sprache / ein Framework zum jetzigen Zeitpunkt lernen möchte. Unter Linux kann ich mit meinem aktuellen Shell Wissen erreichen was ich möchte, doch unter Windows war dies bis vor kurzem wesentlich anstrengender.
Flutter / Dart Null Safety Migration
Vor wenigen Tagen erschien im Rahmen des Flutter 2.0 bzw. Dart 2.12 Releases der stabile Null Safety Support für Dart. Entsprechend begab ich mich gestern Abend das erste Mal auf den Migrationspfad und aktualisierte meine kleine Anwendung zur Auswertung von Statistiken. Selbige nutze ich produktiv zum erfassen der Nutzerzahlen hier im Blog und auch um die monatlichen Top 10 Listen zu erstellen.
Die Migration ist sehr gut dokumentiert open_in_new und was extrem großartig ist, ist der dart migration
Befehl, welcher versucht ein Projekt ohne Null Safety für euch anzupassen. Dabei erhält man einen geführten Prozess, bei welchem ihr die Liste der geplanten Änderungen auf einer interaktiven lokalen Website zu sehen bekommt und dort noch weitere Anpassungen vornehmen könnt. Meiner Meinung nach ist dieses Tool im Kontext der Migration eine glatte Eins mit Sternchen.
Nachdem ausführen der Migration für das kleine Projekt mit ca. 1000 Zeilen reinem Code, blieb tatsächlich nur eine Stelle an der ich manuell Hand anlegen musste. Die App lief anschließend ohne Probleme und weiterer Aufwand war nicht nötig. Hier kommt nun aber eine Empfehlung, die mehr Arbeit bedeutet, selbige meiner Meinung nach aber wert ist.
Dart Streams manipulieren mit stream_transform
Wer im Dart / Flutter Kontext mit Streams arbeitet hat hin und wieder etwas umfangreichere Anforderungen, als das was Dart von Haus aus mitbringt. Denn obwohl der Stream Support in Dart durchaus gut ist, fehlt z.B. die Möglichkeit Streams zusammenzuführen oder Events zu sammeln / zu verwerfen (Debounce).
Dieses Problem lässt sich natürlich einfach lösen, denn es gibt verschiedene Packages die Darts Stream Support erweitern. Sehr gerne wird hier zu RxDart gegriffen, einer bekannten und umfangreichen Library. Ich selber habe z.B. mit dem Java Ableger RxJava gearbeitet und sehr gute Erfahrungen gemacht. Entsprechend ist RxDart natürlich auch ein gangbarer Weg. Aber man muss ja nicht immer gleich mit Kanonen auf Spatzen schießen, denn selbiges wird vor allem gerne auf Stack Overflow gerne mal empfohlen.
Dabei gibt es für einfache Aufgaben das Paket stream_transform, welches direkt von den Dart Entwicklern kommt und eine Reihe kleiner und gezielt anwendbarer Utility Methoden mitbringt. Mit stream_transform könnt ihr Streams buffern oder debouncen, sie kombinieren oder anders manipulieren. Am Ende sind es nur ca. 20 Methoden, welche aber diverse Fälle abdecken, ohne einen gigantischen Footprint in eurem Code zu hinterlassen. Ich bin ein Freund davon sich nur ins Haus zu holen was man auch braucht. Entsprechend war ich froh für meinen Einsatzzweck - Debounce von Events für eine Suchfunktion – mit stream_transform das Problem schnell und einfach lösen zu können.
Wie erwähnt habe ich allerdings auch gar nichts gegen RxDart und wenn man umfangreichere Aktionen im Bereich Streams durchführt ist man mit RxDart vermutlich auch besser bedient, hier geht es ausschließlich darum das richtige Tool für die richtige Aufgabe zu nutzen.