getOrCreateSharedObject<T extends ReferenceableType> static method

T getOrCreateSharedObject<T extends ReferenceableType>(
  1. String id, {
  2. required T ifAbsent(
    1. String id
    ),
})

Returns a T ReferenceableType with id, or creates with ifAbsent function.

Implementation

static T getOrCreateSharedObject<T extends ReferenceableType>(String id,
    {required T Function(String id) ifAbsent}) {
  var t = T;
  var instances = (_typesInstances[t] ??= <String, WeakReference<T>>{})
      as Map<String, WeakReference<T>>;

  var o = instances[id]?.target;

  if (o == null) {
    o = ifAbsent(id);
    instances[id] = WeakReference(o);
  }

  return o;
}