getOrCreateAsync<T> method
Async version of getOrCreate.
Gets the value associated with key, or creates and caches a new
value using the async factory if not found.
Example:
final value = await cache.getOrCreateAsync<String>('key', (entry) async {
entry.slidingExpiration = Duration(minutes: 5);
return await fetchFromApi();
});
Implementation
Future<T> getOrCreateAsync<T>(
Object key,
Future<T> Function(ICacheEntry entry) factory,
) async {
T? result;
if (tryGetValue<T>(key, (value) => result = value)) {
return result as T;
}
final entry = createEntry(key);
final value = await factory(entry);
entry.value = value;
_commitEntry(entry);
return value;
}