Riverpodライクな書き味を、挙動を明示した設計で。

miniriverpod は Provider/AsyncProvider の体験を保ちつつ、family相当の同一性、mutation更新、ライフサイクル破棄を明示APIで統一した実装です。

コード生成なし

family相当の同一性、override、DI を subclass + args + Scope で扱えます。

非同期モデルを統一

AsyncProvider ひとつで Future と Stream を扱い、rebuild / invalidate / refresh / dispose 時の購読解除を厳密に管理します。

並行実行を内蔵

ref.invoke(provider.method()) に concurrent / queue / restart / dropLatest を標準適用できます。

推奨オンボーディングフロー

ProviderScope で起動し、Provider/AsyncProvider を定義し、更新は ref.invoke で並行制御を明示して実行します。

インストール

flutter pub add miniriverpod

Mutation + 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'));
互換性に関する注意

miniriverpod は Provider + AsyncProvider + WidgetRef の使い方をRiverpodに近づけつつ、codegen 前提の経路は subclass + args、Scope注入、明示的 mutation 呼び出しに置き換えています。