Boehrsi.de - Blog

Flutter / Dart Null Safety Migration

Erstellt am event Uhr von account_circle Boehrsi in label Development
Flutter / Dart Null Safety Migration Bild

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.

Related Links

Dart Streams manipulieren mit stream_transform

Erstellt am event Uhr von account_circle Boehrsi in label Development
Dart Streams manipulieren mit stream_transform Bild

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.

Related Links
Bildquelle: pub.dev open_in_new

pub.green - Kompatibilitätsprüfung für Flutter Plugins

Erstellt am event Uhr von account_circle Boehrsi in label Development
pub.green - Kompatibilitätsprüfung für Flutter Plugins Bild

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.

Related Links

Flutter 2.0, Dart 2.12 und mehr Neuigkeiten

Erstellt am event Uhr von account_circle Boehrsi in label Development
Flutter 2.0, Dart 2.12 und mehr Neuigkeiten Bild

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.

Related Links

Flutter Engage - Bald gibt es Neuigkeiten

Erstellt am event Uhr von account_circle Boehrsi in label Development
Flutter Engage - Bald gibt es Neuigkeiten Bild

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.

Related Links

Dart als Scripting-Lösung

Erstellt am event Uhr von account_circle Boehrsi in label Development
Dart als Scripting-Lösung Bild

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.

Related Links

Flutter Community - Gute Plugins und interessante Blogbeiträge

Erstellt am event Uhr von account_circle Boehrsi in label Development
Flutter Community - Gute Plugins und interessante Blogbeiträge Bild

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.

Related Links

Dart Null Safety Beta erschienen

Erstellt am event Uhr von account_circle Boehrsi in label Development
Dart Null Safety Beta erschienen Bild

In den letzten Monaten arbeitete ich sehr aktiv mit Kotlin und Dart, aus diesem Grund bin ich sehr froh das Dart im Bereich Null Safety vorankommt. Seit wenigen Tagen ist Null Safety in Dart als Beta Feature verfügbar und kann genutzt werden. Dafür muss das genutzte Dart Environment auf mindestens 2.12 gesetzt werden, weitere Infos dazu gibt es in der offiziellen Dart Dokumentation open_in_new. Für alle die mit dem Thema nicht Ad-Hoc etwas anfangen können, im unteren Teil der News gibt es ein schönes kleiner Videos, welches Null Safety schnell und einfach erklärt.
Mir wird dieses Feature, sobald es stabil verfügbar ist und alle Plugins aktualisiert wurden, definitiv helfen besseren Code zu schreiben. Zu diesem Schluss komme ich auf Grund meiner Erfahrungen mit Java und Kotlin. Denn während man in Java Null einfach so nutzen kann, ist Kotlin strikter und wirft schon bei der Implementierung wesentlich mehr Fehler, sodass man den Code sicher und sauber schreiben kann.
Initial ist an viele stellen ein Umdenken nötig, gerade in langen Ketten von Methodenaufrufen ist man vielleicht etwas genervt und ein paar Abläufe müssen vielleicht sogar generell überdacht werden, aber am Ende lohnt es sich. Die Menge an Null Pointer Exceptions, wie man sie aus Java kennt, verschwindet quasi sofort. Der Code erlaubt es dem Entwickler generell mehr Annahmen zu treffen und sich bezüglich der Werte von Variablen sicher sein zu können. Es muss nur noch einmal über das Für und Wider von Null für eine bestimmte Variable nachgedacht werden, danach hilft einem die IDE.
Wichtig ist abschließend, das Feature als Hilfe anzunehmen und es zu verwenden, denn es überall erzwungen zu überschreiben macht nicht nur das Feature an sich nutzlos, sondern auch den Code fehleranfällig und einfach gesagt schlechter. Und das will ja keiner, denn ein guter Entwickler kümmert sich um seinen Code und ein guter Entwickler will sauberen und performanten Code.

Related Links

Flutter Complete Reference - Der Guide zum Flutter lernen

Erstellt am event Uhr von account_circle Boehrsi in label Development
Flutter Complete Reference - Der Guide zum Flutter lernen Bild

Es gibt viele Wege um etwas zu lernen und ich persönlich finde im Kontext von Programmiersprachen vor allem echte Beispiele und damit verbunden eine gute Dokumentation sehr wichtig.
Solltet ihr Interesse an Flutter haben und ein umfangreiches Kompendium (auf englisch) suchen, inklusive Beispielen und diversen weiteren Informationen, verpackt in eine große Reise quer durch das Flutter Universum, dann solltet ihr euch vielleicht mal Flutter Complete Reference ansehen.
Ich selbst kam leider noch nicht dazu mir das Buch, welches digital und als gedruckte Variante verfügbar ist, anzuschauen, aber die Bewertungen auf z.B. Amazon klingen vielversprechend. 35 € für die Kindle Variante und ca. 49 € für das gedruckte Buch werden verlangt, was für ein umfangreiches Lehrbuch absolut in Ordnung ist wie ich finde.
Ich persönlich lerne selten mit Büchern, aber ich kenne viele die gerne einen konkret definierten Weg gehen und mit der Flutter Complete Reference könnte ich mir vorstellen, kann man dies gut umsetzen. Die Webseite zum Buch ist übrigens auch sehr schön gemacht. Es gibt diverse Beispiele, Ressourcen, eine kleine Vorschau und sogar ein Quiz. Vor allem letzteres finde ich sehr unterhaltsam und durchaus fordernd. Alle Amazon Links sind Affiliate- / Partner-Links die meinen Blog unterstützen.

Related Links

Flutter Build Probleme beheben - Failed to transform libs.jar

Erstellt am event Uhr von account_circle Boehrsi in label Development
Flutter Build Probleme beheben - Failed to transform libs.jar Bild

Derzeit stolpere ich hin und wieder, vor allem aber nach dem Ausführen von flutter clean, über den Fehler Failed to transform libs.jar. Dieser weist konkreter entweder auf debug\libs.jar oder profile\libs.jar hin.
Dieses Problem ist durchaus nervig, weil es jegliche Release Builds blockiert. Beheben lässt es sich zum Glück aber relativ einfach, denn je nach vorangegangener Fehlermeldung müsst ihr einfach nur den passenden Build ausführen, welcher die fehlenden Dateien generiert.

# Falls der Fehler debug\libs.jar referenziert 
flutter build apk --debug
# Falls der Fehler profile\libs.jar referenziert 
flutter build apk --profile

Es ist durchaus möglich das ihr beide Befehle nacheinander ausführen müsst, weil beide Dateien fehlen, achtet also genau auf die Fehlermeldung. Generell hoffe ich, dass das Flutter / Gradle / Android Studio Team die Problematik zeitnah in den Griff bekommt, denn solche Bugs klauen einem gerne die eine oder andere Entwicklungszeit.

Related Links
navigate_before Vorherige format_list_numbered  Seite 9 Nächste navigate_next