Ergonomi bergaya Riverpod dengan perilaku runtime yang eksplisit.

miniriverpod menjaga agar Provider dan AsyncProvider tetap terasa familier, tetapi mempersempit perilaku ke dalam API eksplisit: subclass + args untuk identitas mirip family, token mutasi untuk pembaruan, dan pelepasan (dispose) siklus hidup yang dapat diprediksi.

Tanpa Pembuatan Kode

Provider mirip family, override, dan injeksi dependensi dimodelkan dengan subclass + args + Scope, tanpa pembuatan kode (code generation).

Model Asinkron Terpadu

Satu AsyncProvider menangani Future dan Stream, dengan pembatalan ketat pada rebuild, invalidate, refresh, dan dispose.

Konkurensi Bawaan

Panggilan mutasi mendukung mode concurrent, queue, restart, dan dropLatest via ref.invoke(provider.method()).

Alur Pembelajaran yang Direkomendasikan

Bungkus aplikasi Anda dengan ProviderScope, definisikan kelas Provider/AsyncProvider, dan jalankan pembaruan status melalui ref.invoke dengan konkurensi eksplisit.

Instalasi

flutter pub add miniriverpod

Mutasi + 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'));
Compatibility Note

miniriverpod sengaja menjaga agar Provider + AsyncProvider + WidgetRef tetap dekat dengan Riverpod, tetapi mengganti jalur padat codegen dengan subclass + args, injeksi berbasis Scope, dan panggilan mutasi eksplisit.

Sebelumnya

Open Source

Berikutnya

Instalasi