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(),
);
Scope heldur tengingu dependency-a skýrri og prófanavænni.
overrideWithValue virkar á hverju provider-tilviki, þar á meðal tilvikum byggðum á args.
autoDispose-hegðun breytist ekki við notkun subclass + args.

Næstu skref

Provider-ar og lestur

Sjáðu skýr mynstur fyrir watch/read/listen og AsyncProvider.future.

Opna provider-a

Mutation-aðgerðir

Innleiddu stöðuuppfærslur með mutation-tokenum, mutate og ref.invoke.

Opna mutation-aðgerðir