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);
Kiti žingsniai
Mutations
Perkelkite rašymo operacijas į provider metodus ir vykdykite jas per ref.invoke.
Atverti Flutter API