Criação de Isolates e Passagem de Mensagens
Comunique-se por meio de SendPort e ReceivePort.
Criação de Isolates e Passagem de Mensagens é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.
Assumindo o Controle Manual
Para trabalhadores de longa duração e com muita comunicação, crie você mesmo um isolado com Isolate.spawn. Assim, você controla todo o ciclo de vida dele.
O Ponto de Entrada
Isolate.spawn precisa de uma função de nível superior como ponto de entrada, além de um argumento para enviar a ela na inicialização.
Isolate.spawn(worker, message);Conheça ReceivePort
Um ReceivePort é a sua caixa de mensagens. Você o monitora para receber mensagens que outros isolados enviam para você. 📥
final port = ReceivePort();
port.listen((msg) => print(msg));Conheça SendPort
Cada ReceivePort disponibiliza um SendPort. Quem tiver esse SendPort poderá colocar mensagens na sua caixa de mensagens.
final SendPort tx = port.sendPort;Entregando uma Porta
Para começar a conversar, forneça ao novo isolado um SendPort como argumento de criação. Agora ele sabe para onde responder.
Isolate.spawn(worker, port.sendPort);O Trabalhador Responde
Dentro do trabalhador, use o SendPort recebido para send os resultados de volta ao isolado principal.
void worker(SendPort tx) {
tx.send('done');
}O Handshake
Um padrão comum é um handshake nos dois sentidos: primeiro, o trabalhador envia o próprio SendPort, para que os dois lados possam trocar mensagens.
Somente Dados Enviáveis
As mensagens precisam ser enviáveis: números, textos, listas, mapas e SendPorts. Elementos como arquivos abertos ou funções não podem atravessar esse limite.
Lendo as Respostas
De volta ao código principal, a função de retorno de chamada listen do seu ReceivePort é acionada para cada resposta. Trate-as à medida que chegam, na ordem.
Fechando a Porta
Quando terminar, chame port.close(). Um ReceivePort aberto mantém o programa em execução; fechá-lo permite que tudo seja encerrado corretamente.
Encerrando um Isolado
Mantenha a referência ao Isolate e chame isolate.kill() para interromper um trabalhador de que você não precisa mais. Libere os recursos dele imediatamente.
Verificação Rápida
Em qual porta você deve usar listen para receber mensagens?
Recapitulação
Crie o isolado com Isolate.spawn e passe um SendPort para que os isolados possam trocar mensagens. Envie somente dados enviáveis e feche as portas quando terminar. ✅
Perguntas Frequentes
A aula “Criação de Isolates e Passagem de Mensagens” é grátis?
Sim — o texto completo de “Criação de Isolates e Passagem de Mensagens” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.
O que vou aprender em “Criação de Isolates e Passagem de Mensagens”?
Comunique-se por meio de SendPort e ReceivePort. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Dart Academy?
Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Criação de Isolates e Passagem de Mensagens”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Dart Academy?
Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que isolates, não threads
- Isolate.run para descarregamento rápido
- Criação de Isolates e Passagem de Mensagens
- Tarefas com Uso Intenso de Computação sem Travamentos