Ընթերցման ուղիներ՝ 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);
Հաջորդ քայլեր
Mutations
Գրելու գործողությունները տեղափոխեք provider մեթոդների մեջ և կատարեք դրանք ref.invoke-ով։
Բացել Mutations