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.
pub.green - Kompatibilitätsprüfung für Flutter Plugins

Zusammen mit der vorgestern erschienenen Flutter 2.0 Version gibt es auch neues externes Tooling von 3rd-Party Anbietern. Die Continuous Integration und Continuous Delivery (CI/CD) Plattform Codemagic open_in_new hat ein kleines feines neues online Tool veröffentlicht, welches unter pub.green open_in_new erreichbar ist.
Selbiges hat als Ziel die Kompatibilität und Funktionalität von bekannten und viel genutzten Flutter Plugins mit diversen Flutter Versionen zu verifizieren. Sinn und Zweck ist es euch schnell und einfach zu zeigen ob ihr ein Plugin nutzen könnt oder ob es Probleme gibt.
Falls ihr gerne auch mal auf dem Flutter Beta oder Dev Branch unterwegs seid, um neue Features direkt aus erster Hand zu bekommen, dann sind solche Informationen einiges Wert. Denn man spart sich Zeit und Arbeit, wenn man von vornherein weiß ob die gewählten Plugins laufen. Werft also ruhig mal einen Blick auf die neue Plattform.
Flutter 2.0, Dart 2.12 und mehr Neuigkeiten

Ich nutze Flutter bereits seit langem und entsprechend schaute ich mir natürlich auch das gestrige Flutter Engage Event an. Die Neuigkeiten sind umfangreich und sehr positiv. Ich werde hier entsprechend nur die größeren Neuerungen anreißen und alle weiteren Informationen findet ihr wie gewohnt in den Related Links.
Flutter 2.0 wurde im Rahmen des Events nicht nur angekündigt, sondern auch direkt auf dem Stable Channel veröffentlicht. Dieses Update ist gemäß der Versionierung ein Major Update und bietet entsprechend auch große Änderungen. Flutter unterstützt nur Android, iOS, Web und Desktop in der stabilen Version. Der Desktop Support ist dabei zwar noch im Beta Status, kann aber direkt vom Stable Channel aus genutzt werden.
Auch Dart hat ein Upgrade erhalten und ist nun in Version 2.12 verfügbar. Dieses bringt euch unter anderem Dart FFI (Foreign Function Interface) Support, welcher einen einfachen und direkten Weg zu in C geschriebenen Plattformfunktionen ebnet. Ebenfalls neu ist der nun enthaltene Sound Safe Null Support, welcher ohne Probleme parallel mit unsicherem Code genutzt werden kann, wodurch die Migration wesentlich einfacher werden dürfte.
Flutter Engage - Bald gibt es Neuigkeiten

Aktuell gibt es viel Bewegungen in der Flutter Welt. Viele Anbieter von Third-Party-Plugins bringen neue oder stabile Versionen ihrer Tools (z.B. Stream Flutter SDK 1.0.0 Beta open_in_new), aber auch von offizieller Seite gibt es Neuigkeiten. Denn am 03.03.21 findet die Flutter Engage Online Konferenz statt, welche scheinbar sehr interessante Informationen für uns bereithalten soll. Bei Interesse könnt ihr den Related Links folgen und euch für weitere Infos beim Newsletter anmelden.
Abseits von eventuell stabilen Flutter Releases mit Dart Null Safety open_in_new, hoffe ich persönlich auf eine stabile Version der Flutter Integration für den Desktop open_in_new und dort vor allem für Windows. Aktuell arbeite ich an diversen kleinen Tools die auf dem Desktop laufen und Flutter nutzen, entsprechend würde ich mich über einen Release Mode sehr freuen. Doch worum es genau geht und ob die Neuigkeiten kleiner oder vielleicht sogar noch größer ausfallen, werden wir wohl erst im März erfahren. Ich freue mich auf das Event und halte euch auf dem laufenden.
Dart als Scripting-Lösung

Während Dart hauptsächlich im Kontext von Flutter Erwähnung hier im Blog findet, gibt es diverse weitere Anwendungsgebiete. Eines von diesen erschließe ich mir gerade und konkret geht es um Dart als Kommandozeilen-Tool.
Generelle setzt man in diesem Bereich ja eher auf die Shell open_in_new unter Linux oder aber PowerShell open_in_new unter Windows. Gerne wird auch Phyton open_in_new genutzt, aber zu Phyton habe ich bis dato keinen Zugang gefunden. Entsprechend fiel meine Wahl auf das für mich naheliegendste.
Dart ist durch Flutter aktuell eine meiner Hauptsprachen, neben Kotlin. Sofern Dart installiert ist und auf dem Pfad hinterlegt wurde, was im Falle eines Flutter Setups vermutlich ohnehin der Fall ist, kann es bereits losgehen. Mit Dart kann man nun im Prinzip fast alles umsetzen was man normalerweise mit anderen Scripting-Lösungen kann, nur halt in einer Sprache die relativ sicher zu programmieren ist und durch Null Safety wird dieser Bereich bald sogar noch ausgebaut. Dart Programme können dann direkt auf der Konsole ausgeführt werden, wie man es z.B. von Phyton kennt. Parameter und ähnliche Dinge können natürlich auch übergeben werden, sodass man hier eine durchaus vollwertige Scripting-Lösung erhält.
Flutter Community - Gute Plugins und interessante Blogbeiträge

In der Flutter Welt gibt es viele Plugins, viele Blogs und generell viele Quellen für Informationen. Das ist gut so, doch manchmal hätte man gerne eine Untermenge von diesen ganzen Daten. Genau diese Untermenge an kuratierten Informationen und gut verwalteten Plugins will das Flutter Community Projekt bereitstellen. Auf Medium open_in_new findet ihr diverse hilfreiche Beiträge und auf GitHub open_in_new gibt es eine Liste von Plugins die seitens der Flutter Community verwaltete werden. Dazu gehören optimierte Versionen von bekannten Plugins wie android_intent_plus open_in_new, aber auch andere hilfreiche Plugins wie flutter_blurhash open_in_new, sticky_headers open_in_new oder get_it open_in_new.
Auch wenn die Pub.dev Website open_in_new um einiges besser geworden ist, wenn es darum geht einen Showcase für interessante Plugins zu bieten, kann die Liste der Flutter Community definitiv viel nützliches für den geneigten Flutter Entwickler bieten.
Solltet ihr im Flutter Bereich unterwegs sein, kann ich euch nur empfehlen sich die Infos genauer anzusehen, vielleicht findet ihr das eine oder andere praktische für den täglichen Gebrauch.