Zum Hauptinhalt springen

^0.13.0 to ^0.14.0

Mit der Veröffentlichung der Version 0.14.0 von Riverpod hat sich die Syntax für die Verwendung von StateNotifierProvider geändert (für weitere Erklärungen siehe: https://github.com/rrousselGit/riverpod/issues/341).

Für den gesamten Artikel benutzen wir folgenden StateNotifier:

class MyModel {}

class MyStateNotifier extends StateNotifier<MyModel> {
MyStateNotifier(): super(MyModel());
}

The changes​

  • StateNotifierProvider nimmt einen zusätzlichen generischen Parameter entgegen, der der Typ des Zustands Ihres StateNotifier sein sollte.

    Bevor:

    final provider = StateNotifierProvider<MyStateNotifier>((ref) {
    return MyStateNotifier();
    });

    Danach:

    final provider = StateNotifierProvider<MyStateNotifier, MyModel>((ref) {
    return MyStateNotifier();
    });
  • um einen StateNotifier zu erhalten, sollte myProvider.notifier anstatt von myProvider benutzt werden:

    Widget build(BuildContext context, ScopedReader watch) {
    MyStateNotifier notifier = watch(provider);
    }

    Danach:

    Widget build(BuildContext context, ScopedReader watch) {
    MyStateNotifier notifier = watch(provider.notifier);
    }
  • um auf den Zustand eines StateNotifier zu lauschen, sollte myProvider anstelle von myProvider.state benutzt werden:

    Bevor:

    Widget build(BuildContext context, ScopedReader watch) {
    MyModel state = watch(provider.state);
    }

    Danach:

    Widget build(BuildContext context, ScopedReader watch) {
    MyModel state = watch(provider);
    }

Verwendung des Migrationstools zur automatischen Aktualisierung Ihrer Projekte auf die neue Syntax​

Mit der Version 0.14.0 wurde ein Kommandozeilentool für Riverpod veröffentlicht, das Sie bei der Migration Ihrer Projekte unterstützen kann.

Installation des Kommandozeilentools​

Um das Migrationstool zu installieren, führe folgendes aus:

dart pub global activate riverpod_cli

Sie sollten jetzt in der Lage sein, Folgendes zu tun:

riverpod --help

Verwendung​

Nun, da das CLI Tool installiert ist, können wir es benutzen.

  • Öffnen Sie zunächst das Projekt, das Sie migrieren möchten, in Ihrem Terminal.
  • Aktualisieren sie Riverpod nicht.
    Das Migrationstool wird die Version von Riverpod für sie aktualisieren.
  • Stellen sie sicher, dass ihr Projekt keine Fehler enthält.
  • Ausführen:
    riverpod migrate

Das Tool analysiert dann Ihr Projekt und schlägt Änderungen vor. Zum Beispiel können Sie sehen:

Widget build(BuildContext context, ScopedReader watch) {
- MyModel state = watch(provider.state);
+ MyModel state = watch(provider);
}

Accept change (y = yes, n = no [default], A = yes to all, q = quit)?

Um die Änderungen anzunehmen, drücken sie einfach y. Ansonsten, drücken sie n um abzulehnen.