run method

Future<void> run([
  1. List args = const <dynamic>[]
])

Run the isolate

Implementation

Future<void> run([List<dynamic> args = const <dynamic>[]]) async {
  //print("I > run");
  final _comChanCompleter = Completer<void>();
  // set runner config
  final runner = IsoRunner(chanOut: _fromIsolateReceivePort.sendPort);
  if (args.isNotEmpty) runner.args = args;
  // run
  await Isolate.spawn(runFunction, runner,
          onError: _fromIsolateErrorPort.sendPort)
      .then((Isolate _is) {
    _isolate = _is;
    _fromIsolateReceivePort.listen((dynamic data) {
      if (_toIsolateSendPort == null && data is SendPort) {
        _toIsolateSendPort = data;
        //print("I > com port received $data");
        _comChanCompleter.complete();
      } else {
        //print("I > DATA OUT $data");
        _dataOutIsolate.sink.add(data);
        onDataOut!(data);
      }
    }, onError: (dynamic err) {
      _fromIsolateErrorPort.sendPort.send(err);
    });
    _fromIsolateErrorPort.listen((dynamic err) {
      onError!(err);
    });
    //print("I > init data in");
    //runner.initDataIn();
    return;
  });
  await _comChanCompleter.future;
  _isolateReadyToListenCompleter.complete();
  _canReceive = true;
}