getCachedOrNetwork<T> method

  1. @override
Future<Result<T>> getCachedOrNetwork<T>(
  1. String path, {
  2. Map<String, dynamic>? queryParameters,
  3. FutureOr<T?> onSuccess(
    1. dynamic data
    )?,
  4. FutureOr<T> onError(
    1. dynamic data
    )?,
  5. RestApiClientRequestOptions? options,
  6. Duration? cacheLifetimeDuration,
})
override

Gets a cached response from the specified path or network response if cache miss or expired.

Implementation

@override
Future<Result<T>> getCachedOrNetwork<T>(
  String path, {
  Map<String, dynamic>? queryParameters, // Optional query parameters
  FutureOr<T?> Function(dynamic data)? onSuccess, // Callback on success
  FutureOr<T> Function(dynamic data)? onError, // Callback on error
  RestApiClientRequestOptions? options, // Request options
  Duration?
      cacheLifetimeDuration, // Lifetime of cached data, defaults to CacheOptions.cacheLifetimeDuration
}) async {
  // Check for cached result
  if (_options.cacheEnabled) {
    final cachedResult = await getCached(
      path,
      queryParameters: queryParameters,
      onSuccess: onSuccess,
    );

    if (cachedResult.hasData) {
      return cachedResult; // return cached result
    }
  }

  return await get(
    path, // Perform actual GET request
    queryParameters: queryParameters, // Query parameters for request
    onSuccess: onSuccess, // Optional success callback
    options: options, // Optional request options
    cacheLifetimeDuration: cacheLifetimeDuration,
  );
}