read method
Implementation
@override
Future<CachedScreenEntry?> read({
required String miniProgramId,
required String version,
required String screenId,
}) async {
final cacheKey = buildScreenCacheKey(
miniProgramId: miniProgramId,
version: version,
screenId: screenId,
);
if (_loadedKeys.contains(cacheKey)) {
return _entries[cacheKey];
}
_loadedKeys.add(cacheKey);
final file = _fileFor(cacheKey);
if (!await file.exists()) {
return null;
}
try {
final decoded = jsonDecode(await file.readAsString());
if (decoded is! Map) {
await _safeDelete(file);
return null;
}
final entry = CachedScreenEntry.fromJson(
decoded.map((key, value) => MapEntry(key.toString(), value)),
);
_entries[cacheKey] = entry;
return entry;
} catch (_) {
await _safeDelete(file);
return null;
}
}