Тодорхой runtime зан үйлтэй Riverpod маягийн хэрэглээ.

miniriverpod нь Provider болон AsyncProvider-ыг танил хэвээр хадгалдаг ч, family төрлийн ялгаралтад зориулсан subclass + args, шинэчлэлтүүдэд mutation token, таамаглах боломжтой амьдралын мөчлөгийн устгал зэрэг тодорхой API болгон зан үйлийг нарийсгадаг.

Код үүсгэлгүй

family төстэй provider, override, dependency injection-ийг code үүсгэлгүйгээр subclass + args + Scope-оор загварчилдаг.

Нэгдсэн async загвар

Нэг AsyncProvider нь Future болон Stream хоёуланг нь удирдаж, rebuild, invalidate, refresh, dispose үед хатуу цуцлалт хийнэ.

Дотоод concurrency

Mutation дуудлагууд ref.invoke(provider.method())-ээр concurrent, queue, restart, dropLatest-ийг дэмжинэ.

Зөвлөмжит эхлэлийн урсгал

Програмаа ProviderScope-оор ороож, Provider/AsyncProvider class-уудыг тодорхойлоод, ref.invoke-ээр тодорхой concurrency-тэй state шинэчлэлтүүдийг ажиллуулж сураарай.

Суулгалт

flutter pub add miniriverpod

Mutation + дуудалт

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-д суурилсан injection, тодорхой mutation дуудлагуудаар сольсон.