launch method

  1. @MainIsolate()
Future launch()

Spawns an isolate and initializes it for bidirectional communication.

Implementation

@MainIsolate()
Future launch() async {
  var dataReceiver = ReceivePort("dataSrc");
  var events = dataReceiver.asBroadcastStream();
  var callbackReceiver = ReceivePort("callback");
  var callbacks = callbackReceiver.asBroadcastStream();
  var initialCallbackFuture = callbacks.first;
  callbacks.skip(1).first.then((_) {
    dataReceiver.close();
    callbackReceiver.close();
  });
  var isolate = await Isolate.spawn(
      aqueductEntrypoint,
      AqueductInitArgs(
          dataReceiver.sendPort, callbackReceiver.sendPort, this));
  AqueductCallback callback = await initialCallbackFuture;
  var dataPort = callback.dataPort;
  isolate.addOnExitListener(callbackReceiver.sendPort);
  var context =
      AqueductContext(isolate, events, dataPort, null, dataReceiver);
  contextRaw = context;
  if (_isTerminated) terminate();
  mainRun();
}