fetchQuery<DataType, ErrorType> method
Future<DataType?>
fetchQuery<DataType, ErrorType>(
- String key,
- QueryFn<
DataType> queryFn, { - DataType? initial,
- RetryConfig? retryConfig,
- RefreshConfig? refreshConfig,
- JsonConfig<
DataType> ? jsonConfig,
Creates + stores a Query and runs the queryFn immediately
and returns the result
- If fails, returns with
null - If Query already exists, it'll run the Query.fetch anyway
Implementation
Future<DataType?> fetchQuery<DataType, ErrorType>(
String key,
QueryFn<DataType> queryFn, {
DataType? initial,
RetryConfig? retryConfig,
RefreshConfig? refreshConfig,
JsonConfig<DataType>? jsonConfig,
}) async {
try {
DataType? result;
final completer = Completer<DataType>();
final query = createQuery<DataType, ErrorType>(
key,
queryFn,
initial: initial,
retryConfig: retryConfig,
refreshConfig: refreshConfig,
jsonConfig: jsonConfig,
);
final subscription = query.dataStream.listen((data) {
if (!completer.isCompleted) completer.complete(data);
});
final errorSubscription = query.errorStream.listen((error) {
if (!completer.isCompleted)
completer.completeError(error != null ? error : "");
});
result = await query.fetch();
result ??= await completer.future;
errorSubscription.cancel();
subscription.cancel();
return result;
} catch (e) {
return null;
}
}