Riverpod стилска ергономија со јасно runtime однесување.

miniriverpod ги задржува Provider и AsyncProvider познати, но го стеснува однесувањето во јасни API: subclass + args за идентитет сличен на family, mutation токени за ажурирања и предвидливо отстранување на животниот циклус.

Без генерирање код

family-слични provider-и, overrides и dependency injection се моделираат со subclass + args + Scope, без генерирање код.

Обединет async модел

Еден AsyncProvider се справува со Future и Stream, со строго откажување при rebuild, invalidate, refresh и dispose.

Built-in Concurrency

Mutation повиците поддржуваат concurrent, queue, restart и dropLatest преку ref.invoke(provider.method()).

Препорачан воведен тек

Обвиткајте ја апликацијата со 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'));
Compatibility Note

miniriverpod намерно останува Provider + AsyncProvider + WidgetRef близок до Riverpod, но ги заменува codegen-тешките патишта со subclass + args, Scope-базирана инјекција и јасни mutation повици.

Претходно

Open Source