request<T> method
Future<T>
request<T>(
- Future<
T> requestFn(), { - String? cacheKey,
- NetworkStrategy? strategy,
- Duration? cacheTtl,
- RetryPolicy? retryPolicy,
- bool queueIfOffline = true,
Execute a network request with strategy-based resolution.
requestFn— the async closure that performs the actual work.cacheKey— optional key for caching the result.strategy— how to resolve the request (defaults to config default).cacheTtl— per-request TTL override.retryPolicy— per-request retry override.queueIfOffline— whether to enqueue when offline (defaulttrue).
Implementation
Future<T> request<T>(
Future<T> Function() requestFn, {
String? cacheKey,
NetworkStrategy? strategy,
Duration? cacheTtl,
RetryPolicy? retryPolicy,
bool queueIfOffline = true,
}) async {
final effectiveStrategy = strategy ?? _config.defaultStrategy;
_logger.debug(
'NetworkManager: request(strategy: $effectiveStrategy, '
'cacheKey: $cacheKey)',
);
return switch (effectiveStrategy) {
NetworkFirst() => _networkFirst<T>(
requestFn,
cacheKey: cacheKey,
cacheTtl: cacheTtl,
retryPolicy: retryPolicy,
queueIfOffline: queueIfOffline,
),
CacheFirst() => _cacheFirst<T>(
requestFn,
cacheKey: cacheKey,
cacheTtl: cacheTtl,
retryPolicy: retryPolicy,
queueIfOffline: queueIfOffline,
),
CacheOnly() => _cacheOnly<T>(cacheKey),
NetworkOnly() => _networkOnly<T>(
requestFn,
retryPolicy: retryPolicy,
queueIfOffline: queueIfOffline,
cacheKey: cacheKey,
),
};
}