Skaitymo keliai: watch, read ir listen.

Provider suteikia sinchroninę būseną. AsyncProvider grąžina AsyncValue ir gali pateikti Future bei Stream su griežtu gyvavimo ciklo valdymu.

Provider tipai

Pasirinkite provider tipą pagal duomenų šaltinį ir atnaujinimų dažnį.

Provider<T>

Sinchroninės reikšmės ir vietinė išvestinė būsena

AsyncProvider<T>

Future/Stream valdoma būsena kaip AsyncValue<T>

provider.future

Parinkiklis, atskleidžiantis Provider<Future<T>>

Patarimas

Jei būsena ateina iš tinklo arba srauto, pirmiausia rinkitės AsyncProvider. Provider palikite grynai sinchroninei logikai.

Skaitymo API matrica

Naudokite watch kūrimo keliuose, read vienkartinei prieigai ir listen šalutiniams poveikiams.

Dažniausiai

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 ir Stream su AsyncProvider

Vienas AsyncProvider gali grąžinti Future arba susieti Stream per 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) panaikina ankstesnę prenumeratą per rebuild, invalidate ir dispose.
AsyncValue yra sealed class: AsyncLoading / AsyncData / AsyncError.
Raštų derinimas su switch išlaiko krovimo/klaidos UI aiškų.

Kiti žingsniai

Mutations

Perkelkite rašymo operacijas į provider metodus ir vykdykite jas per ref.invoke.

Atverti Flutter API

Flutter API

Rinkitės tarp Consumer, ConsumerWidget ir ConsumerStatefulWidget.

Atverti API Reference