spawnIsolate method
Implementation
Future<(Isolate?, PortListener?, SendPort?, Future<bool>?)>
spawnIsolate() async {
if (_started) {
return (null, null, null, null);
}
final workerDebugName = this.workerDebugName;
var spawnPort = ReceivePort('$workerDebugName:spawnPort');
var spawnPortListener = PortListener(spawnPort);
var resumePortAsync = spawnPortListener.next();
final isolate = await Isolate.spawn(
_isolateInit,
(worker: this, mainWorkerPort: spawnPort.sendPort),
debugName: workerDebugName,
);
var exitPort = ReceivePort();
var completer = Completer<bool>();
exitPort.listen((_) => completer.complete(true));
isolate.addOnExitListener(exitPort.sendPort);
SendPort resumePort = await resumePortAsync;
return (isolate, spawnPortListener, resumePort, completer.future);
}