^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 vonmyProvider
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 vonmyProvider.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.