fetch method

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

Fetch or refetch data

Implementation

Future<T> fetch({bool force = false}) async {
  // Check enabled state
  if (!enabled.value && !force) {
    if (hasData) return data.value!;
    return Future.error('Query is disabled');
  }

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