T add<T>(T object, Future onClose(T object))

Adds an object to the registry so that it may be shut down when the application stops.

When shutdown occurs, onClose is invoked and passed object. onClose must return a Future that fires when object has successfully shutdown. Example:

  var streamController = new StreamController();
  ResourceRegistry.add(streamController, (controller) => controller.close());

If object has already been registered, this method does nothing.

The return value of this is always object. This allows for concise registration and allocation:

  var streamController = ResourceRegistry.add(new StreamController(), (c) => c.close));

Source

static T add<T>(T object, Future onClose(T object)) {
  if (_registrations.any((r) => identical(r.object, object))) {
    return object;
  }
  _registrations.add(new _ResourceRegistration(object, onClose));
  return object;
}