useAsyncValueProvider<T> function
AsyncValueCached<T>
useAsyncValueProvider<
T>( - ProviderBase<AsyncValue<T>> provider
)
Implementation
AsyncValueCached<T> useAsyncValueProvider<T>(
ProviderBase<AsyncValue<T>> provider,
) {
final context = useContext();
final container = ProviderScope.containerOf(context);
final cached = useState<AsyncValue<T>>(const AsyncLoading());
useEffect(
() {
final sub = container.listen(
provider,
(_, AsyncValue<T> value) {
if (value is AsyncData<T> || value is AsyncError) {
cached.value = value;
}
},
fireImmediately: true,
);
return sub.close;
},
[
container,
provider,
],
);
void refresh({bool reset = false}) {
if (reset) {
cached.value = const AsyncLoading();
}
container.refresh(provider);
}
return AsyncValueCached<T>(
cached: cached.value,
refresh: refresh,
);
}