get<T> method

Future<T?> get<T>(
  1. String key, {
  2. List<CacheLevel>? levels,
})

Gets a cache entry

Implementation

Future<T?> get<T>(String key, {List<CacheLevel>? levels}) async {
  await _ensureInitialized();

  // Normalize the levels
  levels ??= [CacheLevel.memory, CacheLevel.disk];

  // Try to get the entry from each level
  for (final level in levels) {
    final entry = await _getFromLevel<T>(key, level);
    if (entry != null) {
      // Update the last accessed time
      entry.metadata.updateLastAccessedAt();

      // If the entry was found in a lower level, store it in higher levels
      if (level != CacheLevel.memory && levels.contains(CacheLevel.memory)) {
        await _storeInLevel(
          key,
          entry.data,
          entry.metadata,
          CacheLevel.memory,
        );
      }

      return entry.data as T;
    }
  }

  return null;
}