Riverpodライクな書き味を、より小さな構成で。
miniriverpod は Provider/AsyncProvider の体験を保ちながら、family・mutation・ライフサイクルを Flutter 向けに整理した実装です。
コード生成なし
family相当、override、mutation まで通常の Dart クラスで記述できます。
非同期モデルを統一
AsyncProvider ひとつで Future と Stream を扱い、再計算時の購読解除も厳密に管理します。
並行実行を内蔵
mutation 呼び出しに concurrent / queue / restart / dropLatest を標準提供します。
実運用までの基本フロー
ProviderScope + Provider クラス + ref.invoke を軸に、更新フローを明確に構成します。
インストール
flutter pub add miniriverpod
Mutation + Invoke
user_provider.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 前提の機能はサブクラス + args と明示的な mutation 呼び出しに置き換えています。