Salta al contenuto principale

da ^0.13.0 a ^0.14.0

Con il rilascio della versione 0.14.0 di Riverpod, la sintassi per usare StateNotifierProvider è cambiata.
(vedere https://github.com/rrousselGit/river_pod/issues/341 per la spiegazione).

Per l'intero articolo, considera leggere StateNotifier:

class MyModel {}

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

Cambiamenti

  • StateNotifierProvider accetta un generico parametro extra, che dovrebbe essere il tipo dello stato del tuo StateNotifier.

    Prima:

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

    Dopo:

    final provider = StateNotifierProvider<MyStateNotifier, MyModel>((ref) {
    return MyStateNotifier();
    });
  • per ottenere lo StateNotifier, ora dovresti leggere myProvider.notifier invece di solo myProvider :

    Prima:

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

    Dopo:

    Widget build(BuildContext context, ScopedReader watch) {
    MyStateNotifier notifier = watch(provider.notifier);
    }
  • per stare in ascolto di un StateNotifier, ora dovresti leggere myProvider invece di myProvider.state :

    Prima:

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

    Dopo:

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

Utilizzo dello strumento di migrazione per aggiornare i tuoi progetti alla nuova sintassi

Con la versione 0.14.0, viene introdotto uno strumento da riga di comando per Riverpod, il quale può aiutarti a migrare i progetti.

Installazione dello strumento

Per installare lo strumento di migrazione, eseguire:

dart pub global activate riverpod_cli

Dovresti poter eseguire ora:

riverpod --help

Uso

Ora che lo strumento è installato, possiamo iniziare ad utilizzarlo.

  • Per prima cosa, apri il progetto che vuoi migrare nel tuo terminale.
  • NON aggiornare Riverpod. Lo strumento di migrazione aggiornerà la versione di Riverpod per te.
  • Assicurati che il tuo progetto non contenga errori.
  • Eseguire:
    riverpod migrate

Lo strumento analizzerà il tuo progetto e ti suggerirà le modifiche. Per esempio potresti vedere:

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)?

Per accettare la modifica, premi semplicemente y. In caso contrario, premi n.