call method

AsyncSignal<T> call(
  1. Arg arg
)

Retrieves the cached async signal for arg, creating it if it doesn't exist.

Implementation

AsyncSignal<T> call(Arg arg) {
  if (_cache.containsKey(arg)) {
    return _cache[arg]!;
  }
  final sig = _creator(arg);
  _cache[arg] = sig;

  if (sig.autoDisposeEnabled) {
    final previousOnDispose = sig.onDisposeCallback;
    sig.onDisposeCallback = () {
      try {
        previousOnDispose?.call();
      } finally {
        _cache.remove(arg);
      }
    };
  }
  return sig;
}