ປະສົບການແບບ Riverpod ພ້ອມພຶດຕິກໍາ runtime ທີ່ຊັດເຈນ.

miniriverpod ຮັກສາ Provider ແລະ AsyncProvider ໃຫ້ຄຸ້ນເຄີຍ, ແຕ່ຈະຈໍາກັດພຶດຕິກໍາໄວ້ໃນ API ທີ່ຊັດເຈນ: subclass + args ສໍາລັບອົງປະກອບແບບ family, mutation token ສໍາລັບການອັບເດດ, ແລະການປ່ອຍວົງຈອນຊີວິດທີ່ຄາດໄດ້.

ບໍ່ຕ້ອງມີ Code Generation

provider ແບບ family, override, ແລະ dependency injection ໄດ້ຖືກຈໍາລອງດ້ວຍ subclass + args + Scope ໂດຍບໍ່ຕ້ອງມີ code generation.

ຮູບແບບ Async ແບບຮວມ

AsyncProvider ດຽວຮັບຜິດຊອບທັງ Future ແລະ Stream ພ້ອມການຍົກເລີກທີ່ເຂັ້ມງວດເມື່ອ rebuild, invalidate, refresh, ແລະ dispose.

Concurrency ໃນຕົວ

Mutation calls ຮອງຮັບ concurrent, queue, restart, ແລະ dropLatest ຜ່ານ ref.invoke(provider.method()).

ແນວທາງເລີ່ມຕົ້ນທີ່ແນະນໍາ

ຫຸ້ມແອັບຂອງທ່ານດ້ວຍ ProviderScope, ກໍານົດຄລາສ Provider/AsyncProvider, ແລ້ວໃຫ້ອັບເດດ state ຜ່ານ ref.invoke ດ້ວຍ concurrency ທີ່ຊັດເຈນ.

ຕິດຕັ້ງ

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-based, ແລະ mutation calls ທີ່ຊັດເຈນ.

ກ່ອນໜ້າ

ໂອເພນຊອດ

ຕໍ່ໄປ

ຕິດຕັ້ງ