Riverpod-stílusú ergonómia kifejezett futásidejű viselkedéssel.

A miniriverpod megtartja a Provider és AsyncProvider ismerős felületét, de a viselkedést kifejezett API-kra szűkíti: subclass + args az family-szerű azonossághoz, mutation tokenek a frissítésekhez, és kiszámítható életciklus-lebontás.

Kódgenerálás nélkül

A family-szerű providereket, override-okat és dependency injectiont subclass + args + Scope modellezi, kódgenerálás nélkül.

Egységes Async modell

Egyetlen AsyncProvider kezeli a Future-t és a Streamet, szigorú megszakítással rebuild, invalidate, refresh és dispose esetén.

Beépített konkurencia

A mutation hívások támogatják a concurrent, queue, restart és dropLatest módokat a ref.invoke(provider.method()) segítségével.

Ajánlott kezdő útvonal

Csomagolja az alkalmazást ProviderScope-ba, definiáljon Provider/AsyncProvider osztályokat, és futtassa az állapotfrissítéseket ref.invoke segítségével, kifejezett konkurenciával.

Telepítés

flutter pub add miniriverpod

Mutáció + 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,
  );
}

// UI
await ref.invoke(userProvider.rename('Alice'));
Kompatibilitási megjegyzés

A miniriverpod tudatosan Provider + AsyncProvider + WidgetRef közel marad a Riverpodhoz, de a kódgenerálás-központú útvonalakat subclass + args, Scope-alapú injektálás és kifejezett mutation hívások váltják fel.