Класс ReceivePort
Класс ReceivePort создаёт порт для приёма сообщений от других изолятов.
Каждый экземпляр ReceivePort имеет свойство sendPort,
которое нужно передать в другой изолят, чтобы он мог отправлять сообщения обратно.
При создании нового экземпляра ReceivePort автоматически открывается порт.
Когда порт больше не нужен, его следует закрыть методом close,
иначе изолят не завершится. Получить поток сообщений можно через свойство listen.
Синтаксис
ReceivePort()
Пример
Давайте создадим порт приёма и выведем его порт отправки:
import 'dart:isolate';
void main()
{
ReceivePort receivePort = ReceivePort();
print(receivePort.sendPort);
receivePort.close();
}
Результат выполнения кода:
"SendPort"
Пример
Давайте отправим сообщение в порт приёма и прочитаем его через поток listen:
import 'dart:isolate';
void main()
{
ReceivePort receivePort = ReceivePort();
receivePort.listen((message) {
print(message);
receivePort.close();
});
receivePort.sendPort.send('abcde');
}
Результат выполнения кода:
"abcde"
Пример
Давайте создадим изолят, передадим ему порт отправки и получим от него ответ:
import 'dart:isolate';
void main() async
{
ReceivePort receivePort = ReceivePort();
await Isolate.spawn(worker, receivePort.sendPort);
receivePort.listen((message) {
print(message);
receivePort.close();
});
}
void worker(SendPort sendPort)
{
sendPort.send('12345');
}
Результат выполнения кода:
"12345"