Yazma axını açıq qalır.
Mutasiyaları provider metodları kimi təyin edin, state-i MutationToken ilə izləyin və ref.invoke(call) vasitəsilə icra edin.
Mutation əsas blokları
Mutation, mutate(token, body, concurrency: ...) tərəfindən qaytarılan Call<R, State>-dir.
Token
late final renameMut = mutation<void>(#rename)
Execution
await ref.invoke(provider.rename(...))
State
Idle / Pending / Success / Error via ref.watch(token)
Qeyd
notifier.method() tərzli API-lərdən fərqli olaraq, miniriverpod mutation icrasını birinci dərəcəli çağırış obyekti kimi təqdim edir.
Mutasiyanı icra et
Cancellation və drop davranışlarını çağırana göstərmək üçün ref.invoke istifadə edin.
İşə sal
Paralellik seçimləri
concurrent : run all calls in parallel (default).
queue : FIFO; keep running queued calls even after an error.
restart : cancel previous run, keep only latest call.
dropLatest : drop incoming calls while one is running.
Nümunə: optimistik yeniləmə + restart
Yaygın yazma nümunəsi əvvəlcə AsyncData-nı optimistik yeniləyir, sonra server cavabı ilə sinxronlaşır.
class UserProvider extends AsyncProvider<User?> {
UserProvider() : super.args(null);
late final renameMut = mutation<void>(#rename);
Call<void, AsyncValue<User?>> rename(String newName) => mutate(
renameMut,
(ref) async {
final cur = ref.watch(this).valueOrNull;
ref.state = AsyncData((cur ?? const User()).copyWith(name: newName), isRefreshing: true);
final api = ref.watch(apiProvider);
await api.rename(newName);
ref.state = AsyncData(await api.me());
},
concurrency: Concurrency.restart,
);
}
Növbəti Addımlar
Flutter API
Mutasiya state-ni ConsumerWidget və ya ConsumerStatefulWidget ilə UI-yə bağlayın.
Flutter API-ni aç