Lukupolut: watch, read ja listen.

Provider tarjoaa synkronisen tilan. AsyncProvider palauttaa AsyncValue-arvon ja voi tarjota Future- ja Stream-rajapinnan tiukalla elinkaarikäsittelyllä.

Providertyypit

Valitse providertype tietolähteen ja päivitystiheyden mukaan.

Provider<T>

Synkroniset arvot ja paikallisesti johdettu tila

AsyncProvider<T>

Future-/Stream-ohjattu tila AsyncValue<T>:nä

provider.future

Valitsin, joka paljastaa Provider<Future<T>>-arvon

Vinkki

Jos tila tulee verkosta tai streamistä, suosi ensin AsyncProvideria. Pidä Provider puhtaalle synkroniselle logiikalle.

Lue API-matriisi

Käytä watchia build-polkuissa, readia kertakäyttöiseen lukuun ja listeniä sivuvaikutuksiin.

Yleisin

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 ja Stream AsyncProviderin kanssa

Yksi AsyncProvider voi palauttaa Future-arvon tai sitoa Streamin ref.emit(stream) -kutsulla.

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) peruuttaa aiemman tilauksen uudelleenrakennuksessa, invalidate- ja dispose-vaiheissa.
AsyncValue on sealed class: AsyncLoading / AsyncData / AsyncError.
Switchin avulla tehtävä pattern matching pitää lataus- ja virhetilat eksplisiittisinä.

Seuraavat askeleet

Mutations

Siirrä kirjoitusoperaatiot provider-metodeihin ja suorita ne ref.invoke-kutsulla.

Avaa Flutter API

Flutter API

Valitse Consumerin, ConsumerWidgetin ja ConsumerStatefulWidgetin välillä.

Avaa API Reference