fetch method
Future<void>
fetch(
{ - Q? query,
- bool silent = false,
})
Implementation
Future<void> fetch({Q? query, bool silent = false}) async {
final currentRequest = ++_requestId;
_query = query;
if (!silent) {
emit(
QueryState<T>(
isLoading: true,
rawdata: _clearOnRefresh ? null : state.rawdata,
filter: state.filter,
errorMessage: '',
),
);
}
try {
final result = await _fetchCallback(_query);
if (currentRequest != _requestId) return;
if (!_hasLoadedOnce) {
if (_onLoad != null) {
final shouldContinue = _onLoad!.call(result);
if (!shouldContinue) {
_hasLoadedOnce = true;
emit(
QueryState<T>(
rawdata: state.rawdata,
filter: state.filter,
isLoading: false,
),
);
return;
}
}
_hasLoadedOnce = true;
}
emit(
QueryState<T>(
rawdata: result,
filter: state.filter,
isLoading: false,
),
);
_onUpdate?.call(result);
} catch (e, stackTrace) {
if (currentRequest != _requestId) return;
final errorMessage = parseErrorMessage(e);
emit(
QueryState<T>(
errorMessage: errorMessage,
rawdata: state.rawdata,
filter: state.filter,
isLoading: false,
),
);
if (kDebugMode) {
print('QueryController error: $e');
print('StackTrace: $stackTrace');
}
}
}