Ergonomía al estilo Riverpod con comportamiento explícito en tiempo de ejecución.
miniriverpod mantiene Provider y AsyncProvider familiares, pero acota el comportamiento a APIs explícitas: subclass + args para una identidad tipo familia, mutation tokens para las actualizaciones y una eliminación del ciclo de vida predecible.
Sin generación de código
Los providers tipo familia, los overrides y la inyección de dependencias se modelan con subclass + args + Scope, sin generación de código.
Modelo asíncrono unificado
Un único AsyncProvider gestiona Future y Stream, con cancelación estricta en rebuild, invalidate, refresh y dispose.
Concurrencia integrada
Las llamadas de mutación admiten concurrent, queue, restart y dropLatest a través de ref.invoke(provider.method()).
Flujo recomendado de introducción
Envuelve tu app con ProviderScope, define clases Provider/AsyncProvider y ejecuta actualizaciones de estado a través de ref.invoke con concurrencia explícita.
Instalar
flutter pub add miniriverpod
Mutación + Invoke
class UserProvider extends AsyncProvider<User?> {
UserProvider() : super.args(null);
late final renameMut = mutation<void>(#rename);
Call<void, AsyncValue<User?>> rename(String name) => mutate(
renameMut,
(ref) async {
final api = ref.watch(apiProvider);
await api.rename(name);
ref.state = AsyncData(await api.me());
},
concurrency: Concurrency.restart,
);
}
// UI
await ref.invoke(userProvider.rename('Alice'));
Nota de compatibilidad
miniriverpod mantiene deliberadamente Provider + AsyncProvider + WidgetRef la cercanía con Riverpod, pero reemplaza las rutas que dependen mucho de codegen con subclass + args, inyección basada en Scope y llamadas de mutación explícitas.
Anterior
Código abiertoSiguiente
Instalación