Метод addOnExitListener
Запрашивает сообщение о завершении выполнения responsePort при завершении изолированного выполнения.
Изолированное выполнение отправит response в качестве сообщения на responsePort в качестве последнего действия перед завершением. Оно больше не будет выполнять код после отправки сообщения.
Добавление одного и того же порта более одного раза приведет только к получению одного сообщения о завершении, используя последнее значение ответа, которое было добавлено, и его необходимо удалить только один раз, используя removeOnExitListener.
Если изолированное выполнение завершилось до получения этого запроса, сообщение о завершении не будет отправлено.
Объект response должен соответствовать тем же ограничениям, что и при использовании SendPort.send. Рекомендуется использовать только простые значения, которые могут быть отправлены во все изолированные выполнения, такие как null, булевы значения, числа или строки.
Поскольку изолированные выполнения работают асинхронно, возможно, что оно завершится до того, как будет установлен слушатель завершения, и в этом случае на responsePort не будет отправлено никакого ответа. Чтобы этого избежать, используйте соответствующий параметр для функции spawn или запустите изолированное выполнение в приостановленном состоянии, добавьте слушателя, а затем возобновите изолированное выполнение.
Реализация
/* TODO(lrn): Can we do better? Can the system recognize this message and
* send a reply if the receiving isolate is dead?
*/
external void addOnExitListener(SendPort responsePort, {Object? response});
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-isolate/Isolate/addOnExitListener.html