Ընթերցման ուղիներ՝ watch, read և listen։

Provider-ը տալիս է synchronous state։ AsyncProvider-ը վերադարձնում է AsyncValue և կարող է բացահայտել Future և Stream խիստ lifecycle handling-ով։

Provider-ի տեսակներ

Ընտրեք provider-ի տեսակը տվյալների աղբյուրի և թարմացման հաճախականության հիման վրա։

Provider<T>

Սինքրոն արժեքներ և տեղական derived state

AsyncProvider<T>

Future/Stream-ով կառավարվող state որպես AsyncValue<T>

provider.future

Selector, որը ցույց է տալիս Provider<Future<T>>

Խորհուրդ

Եթե state-ը գալիս է ցանցից կամ stream-ից, նախընտրեք AsyncProvider-ը։ Provider-ը պահեք մաքուր synchronous logic-ի համար։

Ընթերցման API մատրիցա

Օգտագործեք watch build paths-ում, read-ը մեկանգամյա հասանելիության համար և listen-ը side effects-ի համար։

Ամենատարածված

watch / read / listen

ref.watch(provider)  : subscribe and rebuild when value changes.
ref.read(provider)   : read current snapshot without subscribing.
container.listen(...) : callback-driven updates; optional fireImmediately.

Future և Stream AsyncProvider-ով

Մեկ AsyncProvider-ը կարող է վերադարձնել Future կամ կապել Stream ref.emit(stream)-ի միջոցով։

final currentUser = AsyncProvider<User>((ref) async {
  final api = ref.watch(apiProvider);
  return api.me();
});

final liveUser = AsyncProvider<User>((ref) {
  final stream = ref.watch(apiProvider).live();
  ref.emit(stream);
  return const User(name: 'Loading...');
}, autoDispose: true, autoDisposeDelay: const Duration(milliseconds: 250));

// Await as Future
final user = await ref.watch(currentUser.future);
ref.emit(stream)-ը rebuild, invalidate և dispose-ի ժամանակ չեղարկում է նախորդ subscription-ը։
AsyncValue-ը sealed class է՝ AsyncLoading / AsyncData / AsyncError։
switch-ով pattern matching-ը պահում է loading/error UI-ն հստակ։

Հաջորդ քայլեր

Mutations

Գրելու գործողությունները տեղափոխեք provider մեթոդների մեջ և կատարեք դրանք ref.invoke-ով։

Բացել Mutations

Flutter API

Ընտրեք Consumer, ConsumerWidget և ConsumerStatefulWidget-ի միջև։

Բացել API Reference