fetch method

Future<T> fetch({
  1. bool force = false,
})

Fetch or refetch data

Returns cached data immediately if available and not stale, otherwise fetches fresh data

Implementation

Future<T> fetch({bool force = false}) async {
  // Return cached data if available and not stale
  if (!force && hasData && !isStale) {
    return data.value!;
  }

  // Deduplicate concurrent requests
  if (_currentFetch != null) {
    return _currentFetch!;
  }

  // Start fetch operation
  _currentFetch = _performFetch();

  try {
    final result = await _currentFetch!;
    return result;
  } finally {
    _currentFetch = null;
  }
}