start method
Starts the isolate and sets up communication.
Waits for the isolate to be ready before returning.
Implementation
Future<void> start() async {
final completer = Completer<SendPort>();
_subscription = _receivePort.listen((dynamic message) async {
if (message is SendPort) {
_sendPort = message;
completer.complete(message);
} else if (message is Map<String, dynamic>) {
final id = message['messageId'] as String;
_completers.remove(id)?.complete(message['result']);
_eventController.add(IsolateWorkerEvent(IsolateWorkerEventType.done, {
'worker': _tag,
'messageId': id,
'result': message['result'],
}));
}
});
_isolate = await Isolate.spawn(_entryPoint, _receivePort.sendPort);
await completer.future;
}