Cesty čtení: watch, read a listen.

Provider poskytuje synchronní stav. AsyncProvider vrací AsyncValue a může vystavit Future i Stream se striktní správou životního cyklu.

Typy providerů

Zvolte typ providera podle zdroje dat a frekvence aktualizací.

Provider<T>

Synchronní hodnoty a lokálně odvozený stav

AsyncProvider<T>

Stav řízený Future/Stream jako AsyncValue<T>

provider.future

Selektor, který vystavuje Provider<Future<T>>

Tip ke čtení

Pokud stav pochází ze sítě nebo streamu, nejdřív zvolte AsyncProvider. Provider ponechte pro čistou synchronní logiku.

Matice API pro čtení

Používejte watch v build cestách, read pro jednorázové čtení a listen pro vedlejší efekty.

Nejběžnější

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 a Stream s AsyncProvider

Jediný AsyncProvider může vrátit Future nebo připojit Stream přes 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) při rebuild, invalidate a dispose ruší předchozí odběr.
AsyncValue je sealed class: AsyncLoading / AsyncData / AsyncError.
Pattern matching se switch drží UI načítání/chyb explicitní.

Další kroky

Mutations

Přesuňte zápisové operace do metod providera a spouštějte je přes ref.invoke.

Otevřít Flutter API

Flutter API

Vyberte mezi Consumer, ConsumerWidget a ConsumerStatefulWidget.

Otevřít referenci API