fetchInfiniteQuery<DataType, ErrorType, PageType> method
Future<DataType?>
fetchInfiniteQuery<DataType, ErrorType, PageType>(
- String key,
- InfiniteQueryFn<
DataType, PageType> queryFn, { - required InfiniteQueryNextPage<
DataType, PageType> nextPage, - required PageType initialPage,
- RetryConfig? retryConfig,
- RefreshConfig? refreshConfig,
- JsonConfig<
DataType> ? jsonConfig,
Creates + stores an InfiniteQuery and fetches the first page immediately and returns the result
- If fails, returns with
null - If InfiniteQuery already exists, it'll run the InfiniteQuery.fetch anyway
Implementation
Future<DataType?> fetchInfiniteQuery<DataType, ErrorType, PageType>(
String key,
InfiniteQueryFn<DataType, PageType> queryFn, {
required InfiniteQueryNextPage<DataType, PageType> nextPage,
required PageType initialPage,
RetryConfig? retryConfig,
RefreshConfig? refreshConfig,
JsonConfig<DataType>? jsonConfig,
}) async {
try {
DataType? result;
final completer = Completer<DataType>();
final query = createInfiniteQuery<DataType, ErrorType, PageType>(
key,
queryFn,
nextPage: nextPage,
initialPage: initialPage,
retryConfig: retryConfig,
refreshConfig: refreshConfig,
jsonConfig: jsonConfig,
);
final subscription = query.dataStream.listen((event) {
if (!completer.isCompleted) completer.complete(event.data);
});
final errorSubscription = query.errorStream.listen((event) {
if (!completer.isCompleted)
completer.completeError(event.data != null ? event.data! : "");
});
result = await query.fetch();
result ??= await completer.future;
errorSubscription.cancel();
subscription.cancel();
return result;
} catch (e) {
return null;
}
}