get method

  1. @override
FutureOr<V?> get(
  1. K key, {
  2. Duration? timeout,
  3. bool refresh = false,
})
override

Returns the value of key.

Implementation

@override
FutureOr<V?> get(K key, {Duration? timeout, bool refresh = false}) {
  var now = DateTime.now();

  if (refresh) {
    var val = _sharedMap.get(key);
    return _cacheValue(key, val, now);
  }

  timeout ??= this.timeout;

  var prev = _cache[key];
  if (prev != null) {
    var elapsedTime = now.difference(prev.$1);
    if (elapsedTime <= timeout) {
      return prev.$2;
    }
  }

  var getAsync = _getAsync;
  if (getAsync != null) {
    return getAsync;
  }

  var val = _sharedMap.get(key);
  return _cacheValue(key, val, now);
}