Mga prinsipyo ng disenyo sa likod ng miniriverpod.
Sadyang nililimitahan ng package ang mga feature para manatiling malinaw ang pag-uugali: provider identity sa pamamagitan ng args, scoped injection, at mahuhulaang disposal semantics.
Ano ang nagbabago mula sa Riverpod
Sa halip na generated family classes at implicit notifier channels, mas gusto ng miniriverpod ang subclass + args + explicit invoke.
Pagkakakilanlan ng Provider
runtimeType + args hash
alternatibo sa family
I-subclass ang Provider / AsyncProvider at ipasa ang super.args((...))
DI fallback
Scope<T>.required + overrideWithValue
Bakit ito mahalaga
Maaari mong unawain ang equality at overrides mula sa karaniwang Dart constructors, na nagpapadali sa debugging at tests.
Pagkakakilanlan ng Provider gamit ang args
Tinutukoy ng args ang provider key, kaya ang magkaparehong args ay nangangahulugang parehong cache entry sa loob ng ProviderContainer.
Panuntunan sa identidad
Praktikal na epekto
- Hindi kailangan ng nakalaang family type.
- Ginagawa ang per-argument override sa pamamagitan ng paglikha ng provider instances.
- Panatilihing stable at immutable ang args para sa mahuhulaang caching.
Halimbawa: provider na parang family + Scope fallback
Gamitin ang constructor argument bilang identity at mag-inject ng fallback instance sa pamamagitan ng 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(),
);
Mga Susunod na Hakbang
Mga Provider at Reads
Tingnan ang mga konkretong pattern para sa watch/read/listen at AsyncProvider.future.
Buksan ang mga ProviderMga Mutasyon
Magpatupad ng state updates gamit ang mutation tokens, mutate, at ref.invoke.
Buksan ang mga Mutasyon