Saltar al contenido principal

^0.13.0 a ^0.14.0

Con el lanzamiento de la versión 0.14.0 de Riverpod, la sintaxis para usar StateNotifierProvider cambió (ve a https://github.com/rrousseGit/river_pod/issues/341 por la explicación).

Para ver todo el artículo, considere el siguiente StateNotifier:

class MyModel {}

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

Los cambios

  • StateNotifierProvider toma un parámetro genérico adicional que debe ser del tipo de estado de tu StateNotifier.

    Antes:

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

    Después:

    final provider = StateNotifierProvider<MyStateNotifier, MyModel>((ref) {
    return MyStateNotifier();
    });
  • para obtener el StateNotifier, ahora debes leer myProvider.notifier en lugar de solo myProvider:

    Antes:

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

    Después:

    Widget build(BuildContext context, ScopedReader watch) {
    MyStateNotifier notifier = watch(provider.notifier);
    }
  • para escuchar el estado de StateNotifier, ahora debes leer myProvider en lugar de myProvider.state:

    Antes:

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

    Después:

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

Usando la herramienta de migración para actualizar automáticamente tus proyectos a la nueva sintaxis

Con la versión 0.14.0 llegó el lanzamiento de una herramienta de línea de comandos para Riverpod que puede ayudarte a migrar tus proyectos.

Instalación de la línea de comandos

Para instalar la herramienta de migración, ejecuta:

dart pub global activate riverpod_cli

Ahora deberías poder ejecutar:

riverpod --help

Uso

Ahora que la línea de comandos está instalada, podemos comenzar a usarla.

  • Primero, abre el proyecto que desea migrar en tu terminal.
  • No actualices Riverpod.
    La herramienta de migración actualizará la versión de Riverpod por usted.
  • Asegúrese de que su proyecto no contenga errores.
  • Ejecutar:
    riverpod migrate

La herramienta luego analizará su proyecto y sugerirá cambios. Por ejemplo, puedes ver:

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

Para aceptar el cambio, simplemente presione y. De lo contrario, para rechazarlo, presione n.