Skrifflæðið helst skýrt.
Skilgreindu mutation-aðgerðir sem provider-aðferðir, fylgstu með stöðu með MutationToken og keyrðu með ref.invoke(call).
Byggingareiningar mutation-aðgerða
Mutation-aðgerð er Call<R, State> sem mutate(token, body, concurrency: ...) skilar.
Token
late final renameMut = mutation<void>(#rename)
Keyrsla
await ref.invoke(provider.rename(...))
Staða
Idle / Pending / Success / Error með ref.watch(token)
Athugasemd
Ólíkt API í notifier.method() stíl gerir miniriverpod keyrslu mutation-aðgerða að fyrsta flokks call-hlut.
Keyra mutation-aðgerð
Notaðu ref.invoke svo cancellation og drop-hegðun komi fram hjá kallanda.
Keyra
Valkostir fyrir samhliða keyrslu
concurrent : keyra öll köll samhliða (sjálfgefið).
queue : FIFO; halda queued köllum áfram jafnvel eftir villu.
restart : afturkalla fyrri keyrslu og halda aðeins nýjasta kalli.
dropLatest : sleppa nýjum köllum á meðan eitt er í gangi.
Dæmi: bjartsýn uppfærsla + restart
Algengt skrifmynstur uppfærir AsyncData bjartsýnt og samstillir síðan við svar frá þjóni.
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æstu skref
Flutter API
Tengdu mutation-stöðu við UI með ConsumerWidget eða ConsumerStatefulWidget.
Opna Flutter APIAPI-tilvísun
Farðu fljótt yfir invoke, mutation, mutate og MutationState tegundir.
Opna API-tilvísun