Mtiririko wa kuandika unabaki wazi.
Fafanua mabadiliko kama mbinu za provider, fuatilia state kwa MutationToken, na tekeleza kupitia ref.invoke(call).
Vizuizi vya mabadiliko
Mabadiliko ni Call<R, State> inayorudishwa na mutate(token, body, concurrency: ...).
Token
late final renameMut = mutation<void>(#rename)
Execution
await ref.invoke(provider.rename(...))
State
Idle / Pending / Success / Error via ref.watch(token)
Kumbuka
Tofauti na API za aina notifier.method(), miniriverpod hufanya utekelezaji wa mabadiliko kuwa call object ya daraja la kwanza.
Tekeleza mabadiliko
Tumia ref.invoke ili tabia za kughairi na kuacha zionekane kwa caller.
Endesha
Chaguzi za concurrency
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.
Mfano: sasisho la matumaini + restart
Mfumo wa kawaida wa kuandika husasisha AsyncData kwa njia ya matumaini, kisha husawazisha na majibu ya seva.
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,
);
}
Hatua zinazofuata
Flutter API
Funga state ya mabadiliko kwenye UI kwa kutumia ConsumerWidget au ConsumerStatefulWidget.
Fungua Flutter API