prefetch<T> method
Prefetch a query before the user navigates to a screen. Writes directly to cache — no controller created, no reference count touched.
// On hover or before push
HopeClient.instance.prefetch(
queryKey: ['user', userId],
fetcher: () => api.getUser(userId),
);
Implementation
Future<void> prefetch<T>({
required List<dynamic> queryKey,
required Future<T> Function() fetcher,
}) async {
try {
final result = await fetcher();
final key = _cacheKey(queryKey);
await _cache.set(key, result);
await _cache.set(
'${key}__ts__',
DateTime.now().millisecondsSinceEpoch,
);
} catch (_) {
// silent — if prefetch fails the widget will fetch normally on mount
}
}