The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Una cola secuencial y un recurso asíncrono parametrizado son responsabilidades distintas: mantén la coordinación de la cola en un Notifier si su estado puede inicializarse sincrónicamente, y usa AsyncNotifier.family para el estado asíncrono independiente de cada identificador. Riverpod no convierte automáticamente los comandos en una cola FIFO ni define sus reintentos por elemento; esas reglas pertenecen a tu aplicación.
Por qué separar la cola del recurso asíncrono
La cola responde preguntas de coordinación: qué trabajo está pendiente, cuál puede ejecutarse ahora, en qué orden avanza y qué hacer cuando uno falla. Un recurso asociado a un argumento responde otra pregunta: cuál es el estado asíncrono de esta operación o entidad concreta. Separarlos evita confundir el ciclo de vida de un provider con las reglas de ejecución de una cola.
En términos prácticos, un Notifier es apropiado para estado que se inicializa sincrónicamente. Sus métodos públicos pueden iniciar efectos secundarios y actualizar el estado que observa la UI. Si la inicialización misma debe ser asíncrona, AsyncNotifier integra ese ciclo con AsyncValue y permite también exponer métodos para interacciones. La documentación de Riverpod 2 recomienda (Async)NotifierProvider para estado que cambia como respuesta a interacciones del usuario y para centralizar la lógica de modificación (documentación de (Async)NotifierProvider).
Con family, el argumento identifica una instancia parametrizada del provider. Es útil, por ejemplo, cuando cada dispositivo o registro tiene su propio estado de sincronización, independiente de los demás. El argumento queda disponible para la lógica de inicialización del notifier, aunque la sintaxis concreta depende de la versión de Riverpod y de si usas generación de código (guía de migración desde StateNotifier).
#1 Best Overall
Qué aporta cada API
| Decisión | Notifier | AsyncNotifier.family |
|---|---|---|
| Inicialización | Sincrónica; adecuado si el estado inicial se conoce sin esperar una operación asíncrona. La referencia de API remite a AsyncNotifier cuando la inicialización debe ser asíncrona (referencia de Notifier). | Asíncrona; representa la carga y el resultado mediante el ciclo de estado asíncrono de Riverpod (referencia de AsyncNotifierProvider). |
| Parametrización | Puede coordinar estado compartido para una cola, sin implicar por sí mismo un estado distinto por argumento. | family crea estado asociado a cada argumento, como un identificador de dispositivo o registro (guía de migración desde StateNotifier). |
| Unidad de reintento | La política de cada elemento de la cola debe definirla la aplicación. | Riverpod 3 puede reintentar fallos del cálculo de providers según su política; eso no equivale a reintentar un comando concreto de la cola (novedades de Riverpod 3). |
| Estado para la interfaz | El modelo de estado debe incluir explícitamente los datos de cola que necesite la pantalla. | AsyncValue comunica carga, éxito o error, pero no describe automáticamente todos los elementos pendientes, activos o completados (primer app de Riverpod). |
La serialidad y los reintentos son reglas de la aplicación
Riverpod 3 reintenta automáticamente ciertos fallos durante el cálculo de providers con una demora exponencial configurable: la política documentada empieza en 200 ms, duplica la demora hasta 6,4 s y puede configurarse en ProviderScope, ProviderContainer o en un provider individual. La función de retry puede devolver null para detener los intentos (novedades de Riverpod 3). La documentación de retry indica que la política predeterminada no reintenta Error ni ProviderException; este último puede señalar que falló un provider del que depende otro (documentación de reintentos automáticos).
Ese mecanismo no debe confundirse con la política por elemento de una cola. El retry del provider concierne a su cálculo; una cola necesita definir qué ocurre con un comando fallido. Tampoco se deduce de Riverpod que solo haya un trabajo activo ni que se conserve un orden FIFO. Documenta esas propiedades en la implementación.
Rank #2
Define qué significa «secuencial»
- Establece si el orden es el de inserción y garantiza explícitamente que haya como máximo un trabajo activo.
- Decide si una cancelación elimina el elemento, detiene el trabajo activo o solo impide que se procesen elementos futuros.
- Determina si un elemento que falla bloquea la cola, vuelve a intentarse antes de avanzar, se reprograma al final o queda marcado como fallido.
Diseña el retry del comando
- Especifica qué errores son reintentables, cuántos intentos se permiten y qué espera se aplica entre intentos.
- Define cuándo la cola avanza: tras el éxito, tras agotar intentos o según otra regla deliberada.
- Considera si repetir la operación puede duplicar efectos externos. Para acciones no idempotentes, el retry necesita una estrategia que evite efectos duplicados o los haga recuperables.
- Comprueba dónde se captura, envuelve o propaga cada error. Un fallo absorbido por la lógica de la cola no necesariamente es un fallo del cálculo del provider que Riverpod pueda reintentar.
Versiones, generación de código y llamadas asíncronas
No mezcles ejemplos de distintas generaciones de API. En Riverpod 3 se fusionaron las interfaces FamilyNotifier y Notifier: sin generación de código, el argumento se conserva en la instancia; con generación de código, la documentación muestra una forma de build que recibe el argumento (novedades de Riverpod 3). La guía de generación explica los estilos disponibles para declarar providers (generación de código). Las referencias de API consultadas mostraban riverpod 3.4.3; esa versión observada no garantiza que la documentación o la sintaxis no cambien después.
Riverpod 3 prohíbe seguir interactuando con un Ref o un Notifier después de que haya sido dispuesto. Si una continuación asíncrona retoma tras una espera, considera Ref.mounted antes de volver a operar sobre el provider (novedades de Riverpod 3). Esto importa en trabajos largos: la desaparición de un consumidor no significa por sí sola que un efecto externo pendiente se haya cancelado.
Elige quién posee una cola de larga duración
Antes de poner una cola en un notifier, decide si su vida útil debe coincidir con la del provider o si debe sobrevivir a la desaparición de una pantalla. Si el provider se dispone mientras una operación espera, el código debe respetar ese ciclo de vida y evitar usar su Ref o notifier ya dispuesto. Si el trabajo debe continuar independientemente de la pantalla, su propiedad y duración deben corresponder a un componente con esa vida útil; no presupongas que una llamada pendiente cancelará automáticamente su efecto externo.
Representa el progreso de la cola por separado
AsyncValue ofrece un estado de carga, éxito o error para una operación asíncrona y facilita que la UI derive la presentación (primer app de Riverpod). Para una cola, la pantalla suele necesitar un modelo adicional con los datos que realmente muestra: elementos pendientes, trabajo activo y resultados completados o fallidos. Ese detalle es estado de la aplicación; AsyncValue no crea por sí solo el seguimiento por elemento.
Rank #4
En consecuencia, la separación tiene sentido cuando la cola necesita coordinación síncrona propia y cada recurso identificado necesita un ciclo de carga asíncrono independiente. Si el estado inicial de la propia cola depende de una carga asíncrona, reevalúa esa frontera: que un notifier coordine trabajos no obliga a que su inicialización sea síncrona.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesQuick Recap
Best Value
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

