Aller au contenu principal

^0.13.0 vers ^0.14.0

Avec la sortie de la version 0.14.0 de Riverpod, la syntaxe d'utilisation de StateNotifierProvider a changé.
(voir https://github.com/rrousselGit/riverpod/issues/341 pour l'explication).

Pour l'ensemble de l'article, considérez ce qui suit StateNotifier :

class MyModel {}

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

Les changements

  • StateNotifierProvider prend un paramètre générique supplémentaire, qui devrait être le type de l'état (state) de votre StateNotifier.

    Avant:

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

    Après:

    final provider = StateNotifierProvider<MyStateNotifier, MyModel>((ref) {
    return MyStateNotifier();
    });
  • pour obtenir le StateNotifier, vous devez maintenant lire myProvider.notifier au lieu de simplement myProvider :

    Avant:

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

    Après:

    Widget build(BuildContext context, ScopedReader watch) {
    MyStateNotifier notifier = watch(provider.notifier);
    }
  • pour écouter l'état (state) du StateNotifier, vous devez maintenant lire myProvider au lieu de myProvider.state :

    Avant:

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

    Après:

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

Utilisation de l'outil de migration pour mettre à jour vos projets vers la nouvelle syntaxe automatiquement

Avec la version 0.14.0 de Riverpod est sorti un outil en command-line, qui peut vous aider à la migration de vos projets.

Installation de la command line

Pour installer l'outil de migration, tapez sur le terminal:

dart pub global activate riverpod_cli

Vous devriez maintenant être en mesure de faire :

riverpod --help

Usage

Maintenant que command-line est installée, on peut commencer à l'utiliser.

  • Tout d'abord, ouvrez le projet que vous voulez migrer dans votre terminal.
  • NE PAS mettre à jour Riverpod. L'outil de migration va mettre à jour la version de Riverpod pour vous.
  • Assurez-vous que votre projet ne contient pas d'erreurs.
  • Executez:
    riverpod migrate
    L'outil analysera ensuite votre projet et suggérera des modifications. Par exemple, vous pouvez voir :
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)?

Pour accepter la modification, il suffit d'appuyer sur y. Dans le cas contraire, pour la rejeter, appuyez sur n.