Ein Liebhaber der aktiven Freizeit - Escape Rooms, Lasertag, Bergwanderungen. Seit seinem Ingenieurstudium hat er reges Interesse an mobiler Technologie. Seine Wahl der Plattform: Android
Inhaltsverzeichnis
- Die Anforderungen
- Was hat sich in der letzten Version verändert?
- Update: Flutter 2.0+
- Flutter 2.0+ Migration – Zusammenfassung
Als Entwickler müssen wir manchmal nicht nur neue Anwendungen erstellen, sondern auch die bestehenden aktualisieren. Im März 2021 hat Flutter die neueste Version seines Frameworks veröffentlicht: 2.0.0. In diesem Artikel werden die Schritte erläutert, die beim Aktualisieren von Version 1.22.6 auf die neueste Version ausgeführt werden müssen.
Die Anforderungen
Unser Kunde hatte uns gebeten, die bestehenden Modelle für Veranstaltungen und Nachrichten zu ändern, da das „Backend“ Datenmodelle ändert. Was ist in einem solchen Fall zu tun? Sie sollten überprüfen, ob das Projekt auf dem älteren Flutter (1.22.6) funktioniert. Unser Projekt hat einen Kompilierungsbefehl ausgeführt, aber nachdem wir versucht haben, ihn auf einem Android-Emulator auszuführen, gab es ein Problem mit einer der Bibliotheken: „Projekt kann keinen Pfad zur Bibliothek finden …“ . Nach Durchsicht der Dokumentation und des Change-Logs gab es nur eine Schlussfolgerung – das Projekt musste auf die neue Flutter-Version migriert werden. Und wieso das? Weil die vorherigen Versionen der Bibliothek entfernt wurden und die neuere nur Flutter 2.0+ unterstützt.
Was hat sich in der letzten Version verändert?
Es hat sich viel getan - Flutter ist in den letzten 9 Monaten gereift. Derzeit gibt es einen offiziellen Support für mehr als 6 Plattformen.
Das bedeutet, dass mit dem Flutter Upgrade 2.0+ mehr Widgets für Entwickler zur Verfügung stehen und Apps zwischen diesen Umgebungen portiert werden können. Mehr Bugfixes, mehr Stabilität und „The Billion Dollar Mistake“-Ansatz. Für den Laien brauchen wir nur hinzuzufügen: „!“ oder "?" zum Code und es sollte funktionieren. Darüber hinaus bereitet Dart ein Migrationstool für die NULL-Zulässigkeit vor.
Update: Flutter 2.0+
Dies ist unser Schritt-für-Schritt-Aktionsplan für die Aktualisierung von Flutter auf Version 2.0+:
- Führen Sie das Flutter-Tool aus, um die aktuellen Bibliotheken zu überprüfen.
- Aktualisieren Sie Bibliotheken auf die NULL-Zulässigkeitsversion.
- Aktualisieren Sie den Code, wenn es wichtige Änderungen gibt.
- Führen Sie das Tool für die Migration aus.
- Führen Sie die App aus.
- Nehmen Sie die Änderungen vor, nach denen der Kunde gefragt hat.
Um die aktuelle Version der Bibliotheken zu überprüfen, mussten die Entwickler den Befehl ausführen: dart pub outdated:
die meisten Bibliotheken konnten auf Flutter 2.0 migriert werden, aber nicht alle. In diesem Fall hatten die Entwickler zwei Möglichkeiten:
- Löschen der aktuelle Bibliothek und versuchen, die Funktionalität neu zu schreiben.
- Flag: --no-sound-null-safety.
Da das Projekt zeitlich begrenzt war und die Möglichkeit bestand, dass andere Bibliotheken in die Flutter-Nullbarkeit migriert werden, haben wir uns für den zweiten Ansatz entschieden. Alle Bibliotheken wurden in diesem Schritt auf die neueste Version aktualisiert.
Nachdem dies erledigt war, mussten wir die aktuelle Verwendung der auto_route-Bibliothek anpassen. Andere Bibliotheken waren nach dem Versionsupdate einsatzbereit – auch wenn ihre Hauptversionen geändert wurden.
Es war an der Zeit, den Befehl dart migration auszuführen und Tools zu verwenden, die Dart für die Migration bereitstellt. Und erhielten Informationen zu 608 (!) gefundenen Problemen.
In diesem Projekt haben wir Freezed, auto_route und andere Pakete als Codegenerator verwendet und das Dart-Tool konnte die Migration nicht bewältigen. Es gab jedoch noch eine andere Option – manuell mit dem Befehl flatter analyze und der IDE.
Von diesem Zeitpunkt an waren die Hauptbefehle für Entwickler:
flutter clean
flutter packages get
flutter analyze
fix next displayed issues
Nachdem wir alle Probleme in unserem Code behoben hatten, konnten wir Code für freezed und auto_route mit dem folgenden Befehl neu generieren: flatter pub run --no-sound-null-safety build_runner watch -delete-config-outputs.
Hier ist eine Liste der Aktionen, die beim Aktualisieren des Codes ausgeführt werden müssen:
Nullcheck — für benannte Parameter in Flutter 1.22.6 haben wir die Annotation @required verwendet — dies musste in das erforderliche Schlüsselwort geändert werden.
Nullcheck – „?“ zu dem Typ hinzufügen, der nullbar sein könnte (Checks bleiben gleich) – meistens in Widgets & Styles.
Nullcheck — später Modifier für Eigenschaften, die nicht initialisiert sind.
Nullcheck – vergessen Sie nicht, eine Eigenschaft mit „!“ ungleich null zu erzwingen – nachdem Sie überprüft haben, ob die Eigenschaft nicht null ist.
Es wird mehr Wert auf den Typ gelegt, da er einen großen Unterschied machen kann. Zuvor konnte die Methode _buildPageAppBar Widget zurückgeben und muss jetzt „PreferredSizeWidget“ zurückgeben, IDE konnte keine Dynamik in den richtigen Parametertyp für Lambdas umwandeln (Sie müssen den Typ vor dem Parameternamen hinzufügen).
Die Funktion, die Benutzeraktionen verarbeitet, die an Widgets übergeben werden, muss aufgerufen werden: ()=> onPressed() (früher: onPressed).
Nachdem alle Änderungen und Korrekturen angewendet wurden, zeigte die Analyse von Flatter an, dass 0 Probleme gefunden wurden. Es war an der Zeit, die App in den Emulator auszuführen. Es war seltsam – diesmal zeigte das Android Studio beim Versuch, den Code zu kompilieren, Probleme an. Die meisten Probleme bezogen sich auf NULL-Zulässigkeit und dynamische Parameter, sodass der Analyzer nicht jeden Ort fand, an dem der Code aktualisiert werden musste.
Dank des von uns gewählten Ansatzes wurde die Korrektur des Codes schnell erledigt.
Flutter 2.0+ Migration – Zusammenfassung
Bitte haben Sie Geduld mit dem Code und analysieren Sie ihn, während Sie sich die Frage stellen, was passieren würde, wenn diese Eigenschaft NULL-fähig wäre. Modelle aus dem Netzwerk sind ein ausgezeichneter Ausgangspunkt – abhängig von ihnen können die Modelle in anderen Schichten null sein.
Ein Migrationstool ist eine großartige Idee, die einem Entwickler bei einer einfachen Migration helfen kann, ohne zu viel mit Codegenerierungstools zu arbeiten.
Haben Sie keine Angst, wenn Sie am Anfang viele Probleme sehen – einige von ihnen werden automatisch vom Codegenerator behoben, nachdem Probleme behoben wurden. Andere sind in den meisten Fällen kleiner – das Hinzufügen von „?“, „!“ könnte ausreichen.
Sie sollten Bibliotheken nur verwenden, wenn Sie sie wirklich benötigen – die Wartung könnte nach einigen grundlegenden Änderungen sehr schwierig sein. Denken Sie daran, dass die Entwicklung von Flutter relativ neu ist, daher könnte es zu ausschlaggebenden Änderungen in der Plattform kommen.
Ein Liebhaber der aktiven Freizeit - Escape Rooms, Lasertag, Bergwanderungen. Seit seinem Ingenieurstudium hat er reges Interesse an mobiler Technologie. Seine Wahl der Plattform: Android