getCacheInfo static method
Returns information about the cache
Implementation
static Future<CacheInfo> getCacheInfo() async {
await init();
final keys = _prefs!.getKeys();
int totalItems = 0;
int totalSize = 0;
final List<CacheItemInfo> items = [];
for (final key in keys) {
if (key.startsWith(_cachePrefix)) {
final cacheKey = key.substring(_cachePrefix.length);
final jsonString = _prefs!.getString(key);
if (jsonString != null) {
try {
final cacheData = jsonDecode(jsonString) as Map<String, dynamic>;
final timestamp = cacheData['timestamp'] as int;
final duration = cacheData['duration'] as int;
final metadata =
cacheData['metadata'] as Map<String, dynamic>? ?? {};
totalItems++;
totalSize += jsonString.length;
final now = DateTime.now().millisecondsSinceEpoch;
final isExpired = now - timestamp > duration;
items.add(
CacheItemInfo(
key: cacheKey,
timestamp: DateTime.fromMillisecondsSinceEpoch(timestamp),
size: jsonString.length,
isExpired: isExpired,
metadata: metadata,
),
);
} catch (e) {
// Ignore corrupted cache
}
}
}
}
return CacheInfo(
totalItems: totalItems,
totalSize: totalSize,
items: items,
);
}