Hönnunarreglurnar á bak við miniriverpod.
Pakkinn þrengir viljandi að eiginleikum til að halda hegðun skýrri: provider-auðkenni með args, innskot með Scope og fyrirsjáanleg losunarhegðun.
Hvað breytist frá Riverpod
Í stað sjálfvirkt myndaðra family-klasa og óbeinna notifier-rása kýs miniriverpod undirklasa + args + skýrt invoke.
Provider identity
runtimeType + args hash
family alternative
Gerðu Provider / AsyncProvider að undirklasa og sendu super.args((...)).
DI fallback
Scope<T>.required + overrideWithValue
Af hverju þetta skiptir máli
Þú getur rökstutt jöfnuð og override út frá venjulegum Dart-smiðum, sem heldur villuleit og prófum einföldum.
Auðkenni provider með args
args skilgreinir lykil provider, þannig að eins args þýðir sama skyndiminni-færslu inni í ProviderContainer.
Identity rule
Hagnýtar afleiðingar
- Engin sértæk family-gerð er nauðsynleg.
- Hvert argument fær sitt eigið override með því að búa til provider-instance.
- Haltu args stöðugum og óbreytanlegum til að tryggja fyrirsjáanlegt skyndiminni.
Dæmi: family-líkt provider + Scope-varaleið
Notaðu röksemd í smið sem auðkenni og settu inn varafrávik í gegnum 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);
}
}
// Inject
ProviderScope(
overrides: [
ProductProvider.fallback.overrideWithValue(ProductProvider(search: 'jeans')),
],
child: const App(),
);
Næstu skref
Providera og lestur
Sjáðu hagnýtar aðferðir fyrir watch/read/listen og AsyncProvider.future.
Opna providera