Hönnunarreglur að baki miniriverpod.
Pakkinn þrengir virkni vísvitandi til að halda hegðun skýrri: provider-auðkenni með args, afmörkuð innspýting og fyrirsjáanleg dispose-merking.
Hvað breytist frá Riverpod
Í stað myndaðra family-klasa og óbeinna notifier-rása kýs miniriverpod subclass + args + skýrt invoke.
Provider-auðkenni
runtimeType + args hash
Valkostur við family
Erfðu frá Provider / AsyncProvider og sendu super.args((...))
DI fallback
Scope<T>.required + overrideWithValue
Af hverju þetta skiptir máli
Þú getur rökstutt jöfnuð og overrides út frá venjulegum Dart-constructorum, sem heldur aflúsun og prófunum einföldum.
Provider-auðkenni með args
args skilgreinir provider-lykilinn, þannig að jöfn args merkja sömu cache-færslu innan ProviderContainer.
Auðkennisregla
Hagnýtar afleiðingar
- Sérstök family-tegund er ekki nauðsynleg.
- Override eftir argumenti er gert með því að búa til provider-tilvik.
- Haltu args stöðugum og immutable fyrir fyrirsjáanlegt cache.
Dæmi: family-líkur provider + Scope fallback
Notaðu constructor-argument sem auðkenni og sprautaðu fallback-tilviki inn með Scope.
class ProductProvider extends AsyncProvider<List<Product>> {
ProductProvider({this.search = ''}) : super.args((search,));
final String search;
static final fallback = Scope<ProductProvider>.required('product.fallback');
@override
FutureOr<List<Product>> build(ref) async {
final api = ref.watch(productsApiProvider);
return api.search(q: search);
}
}
// Innspýting
ProviderScope(
overrides: [
ProductProvider.fallback.overrideWithValue(ProductProvider(search: 'gallabuxur')),
],
child: const App(),
);
Næstu skref
Provider-ar og lestur
Sjáðu skýr mynstur fyrir watch/read/listen og AsyncProvider.future.
Opna provider-aMutation-aðgerðir
Innleiddu stöðuuppfærslur með mutation-tokenum, mutate og ref.invoke.
Opna mutation-aðgerðir