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/riverpod/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 solomyProvider
: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 dimyProvider.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.