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(),
);
Scope heldur tengingum milli óska og háða skýrum og auðveldum að prófa.
overrideWithValue virkar fyrir hvert provider-snið, þar með talin args-byggð snið.
autoDispose-hegðunin helst óbreytt þegar undirklasi + args eru notuð.

Næstu skref

Providera og lestur

Sjáðu hagnýtar aðferðir fyrir watch/read/listen og AsyncProvider.future.

Opna providera

Breytingar

Innleystu stöðuuppfærslur með mutation-táknum, mutate og ref.invoke.

Opna breytingar