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

Retrieves data from cache if available, otherwise makes a network request.

This is a cache-first strategy: if valid cached data exists, it's returned immediately without making a network request. Otherwise, a GET request is made and the response is cached for future use.

Useful for data that doesn't change frequently and where stale data is acceptable.

Implementation

@override
Future<Result<T>> getCachedOrNetwork<T>(
  String path, {
  Map<String, dynamic>? queryParameters,
  FutureOr<T> Function(dynamic data)? onSuccess,
  FutureOr<T> Function(dynamic data)? onError,
  RestApiClientRequestOptions? options,
  Duration? cacheLifetimeDuration,
}) async {
  if (_options.cacheEnabled) {
    final cachedResult = await getCached(
      path,
      queryParameters: queryParameters,
      onSuccess: onSuccess,
    );

    if (cachedResult.hasData) {
      return cachedResult;
    }
  }

  return await get(
    path,
    queryParameters: queryParameters,
    onSuccess: onSuccess,
    options: options,
    cacheLifetimeDuration: cacheLifetimeDuration,
  );
}