loadPlugin method

Future<String> loadPlugin(
  1. PluginRequest request, {
  2. String initiator = 'master',
})

Implementation

Future<String> loadPlugin(
  PluginRequest request, {
  String initiator = 'master',
}) async {
  var plugin = _registry.findPlugin(request);

  if (plugin == null) {
    throw PluginNotFoundError(request);
  }

  var proxy = _PluginInstanceProxy.create(plugin);

  var lsid = proxy.intercom.listener.addPassthroughListener(
    (data) => _onPluginDataWrapper(proxy.instance.uid, data),
  );

  try {
    await proxy.initialize();
  } catch (e) {
    proxy.intercom.listener.removeListener(lsid);
    rethrow;
  }

  _registerInstance(proxy, initiator);

  proxy.intercom.sendSignal(Message(MessageType.START_SIGNAL));

  return proxy.instance.uid;
}