Line data Source code
1 : class ApiCache {
2 : final Map<String, ApiCacheEntry> _cache = {};
3 :
4 2 : ApiCacheEntry<T> get<T>(String key) {
5 4 : if (!_cache.containsKey(key)) {
6 6 : _cache[key] = ApiCacheEntry<T>();
7 : }
8 4 : return _cache[key] as ApiCacheEntry<T>;
9 : }
10 :
11 0 : void clear() {
12 0 : _cache.clear();
13 : }
14 :
15 0 : void remove(String key) {
16 0 : _cache.remove(key);
17 : }
18 : }
19 :
20 : class ApiCacheEntry<T> {
21 : T? _cachedData;
22 :
23 4 : bool get shouldReload => _cachedData == null;
24 2 : T get data => _cachedData!;
25 2 : set data(T value) {
26 2 : _cachedData = value;
27 : }
28 :
29 1 : void markAsShouldReload() {
30 1 : _cachedData = null;
31 : }
32 : }
|