own<T> method

  1. @override
T own<T>(
  1. T resource
)
inherited

Registers resource for deterministic cleanup and returns it.

Implementation

@override
T own<T>(T resource) {
  if (_resourceClosing || _resourceDisposed) {
    throw StateError(
      '${runtimeType.toString()} cannot own resources after closing.',
    );
  }
  if (resource == null) return resource;

  final object = resource as Object;
  final alreadyOwned =
      _ownedResources.any((candidate) => identical(candidate, object));
  if (!alreadyOwned) {
    _ownedResources.add(object);
  }

  if (object is LxReactive && object.ownerId == null) {
    object.ownerId = resourceOwnerPath;
  }
  return resource;
}