下面是运行后的打印顺序
I/flutter (20170): 上班
I/flutter (20170): 这里是校长室:main
I/flutter (20170): 这里是饭堂:fantang1
I/flutter (20170): 这里是收发室--检查小孩发回去给他妈妈的信息是:我是秘书的儿子,我来到在校长室了。校长今晚想吃羊肉
I/flutter (20170): 收发室1--允许小孩告知其母亲
I/flutter (20170): 收发室2----
I/flutter (20170): 这里是饭堂,收到我小孩发送来以下消息内容:我是秘书的儿子,我来到在校长室了。校长今晚想吃羊肉
I/flutter (20170): 并且收发室的小孩也过来了,我会让收发室的小孩发送我的回复会去的。
I/flutter (20170): 收发室的小孩从饭堂带回来了什么信息?:我是收发室的儿子,我在饭堂,秘书妈妈已经收到秘书儿子的信息了。秘书妈妈叫校长别做梦了。
I/flutter (20170): 下班
main.dart文件中的代码
import 'dart:isolate';
Future shouFaShi(SendPort who_son,message){
ReceivePort shoufashi_mon=ReceivePort();
SendPort shoufashi_son_1=shoufashi_mon.sendPort;
print('这里是收发室--检查小孩发回去给他妈妈的信息是:'+message.toString());
print("收发室1--允许小孩告知其母亲");
who_son.send([message,shoufashi_son_1]);
print("收发室2----");
return shoufashi_mon.first;
}
main() {xiaozhangshi();}
void xiaozhangshi() async {
print('上班');
print("这里是校长室:"+ Isolate.current.debugName.toString());
ReceivePort xiaozhang_mon = ReceivePort();
SendPort xiaozhang_son_1 = xiaozhang_mon.sendPort;
Isolate.spawn(fantang1, xiaozhang_son_1);
SendPort who_child = await xiaozhang_mon.first;
var message =await shouFaShi(who_child, "我是秘书的儿子,我来到在校长室了。校长今晚想吃羊肉");
print("收发室的小孩从饭堂带回来了什么信息?:$message");
print('下班');
}
void fantang1(SendPort xiaozhang_son_2) async {
print("这里是饭堂:" + Isolate.current.debugName.toString());
ReceivePort mishu_mon_1 = ReceivePort();
SendPort mishu_son_2 = mishu_mon_1.sendPort;
xiaozhang_son_2.send(mishu_son_2);
await for (var msg in mishu_mon_1){
var data =msg[0];
print('这里是饭堂,收到我小孩发送来以下消息内容:$data');
print('并且收发室的小孩也过来了,我会让收发室的小孩发送我的回复会去的。');
SendPort which_son=msg[1];//第二个下标 指定下一个数据的发送人是谁,也就是校长组的发送人
which_son.send("我是收发室的儿子,我在饭堂,秘书妈妈已经收到秘书儿子的信息了。秘书妈妈叫校长别做梦了。");
}
}