putIfAbsent<T extends ScopedDisposableObjectMixin> method
T
putIfAbsent<T extends ScopedDisposableObjectMixin>(
- ScopedKey key,
- DisposableObjectProvider provider
Put an ScopedDisposableObjectMixin object if absent
Implementation
T putIfAbsent<T extends ScopedDisposableObjectMixin>(
ScopedKey key, DisposableObjectProvider provider) {
T? v = pool.putIfAbsent(key, () {
final o = provider();
o._setOwner(this);
o._setScopedKey(key);
return o;
}) as T?;
if (v == null) {
final o = provider();
o._setOwner(this);
o._setScopedKey(key);
v = o as T?;
pool[key] = o;
}
return v!;
}