Ergonomie ve stylu Riverpodu s explicitním chováním za běhu.

miniriverpod ponechává Provider a AsyncProvider povědomé, ale omezuje chování na explicitní API: identitu podobnou rodinám přes subclass + args, aktualizace přes mutační tokeny a předvídatelné uvolňování životního cyklu.

Žádné generování kódu

Rodinám podobné providery, přepisování a injektáž závislostí jsou modelovány pomocí subclass + args + Scope, bez generování kódu.

Sjednocený asynchronní model

Jediný AsyncProvider zvládá Future i Stream, s přísným rušením při přestavbě, invalidate, refresh a dispose.

Vestavěná souběžnost

Volání mutací podporují concurrent, queue, restart a dropLatest přes ref.invoke(provider.method()).

Doporučený úvodní postup

Zabalte aplikaci do ProviderScope, definujte třídy Provider/AsyncProvider a spouštějte aktualizace stavu přes ref.invoke s explicitní souběžností.

Instalace

flutter pub add miniriverpod

Mutace + Invoke

lib/main.dart
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,
  );
}

// Uživatelské rozhraní
await ref.invoke(userProvider.rename('Alice'));
Poznámka ke kompatibilitě

miniriverpod záměrně zachovává Provider + AsyncProvider + WidgetRef blízkost Riverpodu, ale nahrazuje cesty náročné na codegen pomocí subclass + args, injektáže založené na Scope a explicitních mutačních voláních.

Předchozí

Open Source

Další

Instalace