статический метод exit
Синхронно завершает работу текущего изолята.
Эта операция потенциально опасна, поэтому использовать её следует осмотрительно. Изолят немедленно прекращает работу. Возникает исключение, если необязательный message не соответствует ограничениям на отправку данных из одного изолята в другой (подробности см. в разделе SendPort.send). Исключение также возникает, если с изолятом связан finalMessagePort, созданный за пределами текущей группы изолятов с помощью spawnUri.
В случае успеха вызов этого метода не возвращается. Ожидающие выполнения блоки finally не выполняются, управление не возвращается к циклу событий, запланированные асинхронные запросы никогда не выполняются, и даже ожидающие команды управления изолятом могут быть проигнорированы. (Изолят отправит сообщения портам, уже зарегистрированным с помощью Isolate.addOnExitListener, но дальнейший код Dart в изоляте выполняться не будет.)
Если указан finalMessagePort и через него можно отправить message (подробности см. в разделе SendPort.send), сообщение отправляется через этот порт в качестве последней операции текущего изолята. Изолят завершается сразу после возврата вызова SendPort.send.
Если порт является нативным портом — предоставленным через ReceivePort.sendPort или RawReceivePort.sendPort, — система может отправить это последнее сообщение эффективнее, чем при обычном обмене сообщениями между работающими изолятами. В таких случаях граф объектов последнего сообщения будет передан принимающему изоляту без копирования. Кроме того, в большинстве случаев принимающий изолят сможет получить сообщение за постоянное время.
Реализация
external static Never exit([SendPort? finalMessagePort, Object? message]);
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-isolate/Isolate/exit.html