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