prefetch<T> method

Future<void> prefetch<T>({
  1. required List queryKey,
  2. required Future<T> fetcher(),
})

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
  }
}