Kanuni za usanifu zilizo nyuma ya miniriverpod.

Kifurushi hiki hupunguza kwa makusudi vipengele ili tabia ibaki wazi: utambulisho wa provider kupitia args, uwekaji ndani ya scope, na semantiki ya utupaji inayotabirika.

Nini hubadilika ikilinganishwa na Riverpod

Badala ya madarasa ya family yaliyotengenezwa na chaneli fiche za notifier, miniriverpod hupendelea subclass + args + invoke ya wazi.

Utambulisho wa provider

runtimeType + hash ya args

mbadala wa family

Rithi Provider / AsyncProvider na pitisha super.args((...))

mbadala wa DI

Scope<T>.required + overrideWithValue

Kwa nini hili ni muhimu

Unaweza kuhoji usawa na overrides kutoka kwa konstrakta za Dart za kawaida, jambo linalorahisisha debugging na majaribio.

Utambulisho wa provider kwa args

args hufafanua ufunguo wa provider, hivyo args zinazofanana humaanisha ingizo lile lile la cache ndani ya ProviderContainer.

Kanuni ya utambulisho

Madhara ya vitendo

- Aina maalum ya family haihitajiki.
- Ubadilishaji kwa kila hoja hufanywa kwa kuunda mifano ya provider.
- Weka args ziwe thabiti na zisizobadilika ili cache itabirika.

Mfano: provider kama family + mbadala wa Scope

Tumia hoja ya konstrukta kama utambulisho na ingiza mfano mbadala kupitia 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);
  }
}

// Ingiza
ProviderScope(
  overrides: [
    ProductProvider.fallback.overrideWithValue(ProductProvider(search: 'jeans')),
  ],
  child: const App(),
);
Scope huweka uunganishaji wa utegemezi kuwa wazi na rafiki kwa majaribio.
overrideWithValue hufanya kazi kwa kila mfano wa provider, ikijumuisha mifano inayotokana na args.
Tabia ya autoDispose haibadiliki unapoitumia subclass + args.

Hatua zinazofuata

Provida na usomaji

Tazama mifumo halisi ya watch/read/listen na AsyncProvider.future.

Fungua provida

Mutasheni

Tekeleza masasisho ya hali kwa mutation tokens, mutate, na ref.invoke.

Fungua mutasheni