keys method

  1. @override
FutureOr<List<K>> keys({
  1. Duration? timeout,
  2. bool refresh = false,
})
override

Returns all the keys.

Implementation

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

  if (refresh) {
    var keys = _sharedMap.keys();
    return _cacheKeys(keys, now);
  }

  var keysCached = _keysCached;
  if (keysCached != null) {
    timeout ??= this.timeout;

    var elapsedTime = now.difference(keysCached.$1);
    if (elapsedTime <= timeout) {
      return keysCached.$2;
    }
  }

  var keysAsync = _keysAsync;
  if (keysAsync != null) {
    return keysAsync;
  }

  var keys = _sharedMap.keys();
  return _cacheKeys(keys, now);
}