loadData() async {
//
通过
spawn
新建⼀个
isolate
,并绑定静态⽅法
ReceivePort receivePort = ReceivePort();
await Isolate.spawn(dataLoader, receivePort.sendPort);
//
获取新的
isolate
监听
port
SendPort sendPort = await receivePort.first;
//
调⽤
sendReceive
⾃定义⽅法
List dataList = await sendReceive(sendPort,
'http://www.flutterj.com');
print('dataList $dataList');
}
// isolate
绑定⽅法
static dataLoader(SendPort sendPort) async {
//
创建监听
port
,并将
sendPort
传给外界来调⽤
ReceivePort receivePort = ReceivePort();
sendPort.send(receivePort.sendPort);
//
监听外界调⽤
await for (var msg in receivePort) {
String requestURL = msg[0];
SendPort callbackPort = msg[1];
Client client = Client();
Response response = await client.get(requestURL);
List dataList = json.decode(response.body);
//
回调返回值给调⽤者
callbackPort.send(dataList);
}
}
//
创建⾃⼰的监听
port
,并且向新的
isolate
发送消息
Future sendReceive(SendPort sendPort, String url) {
ReceivePort receivePort = ReceivePort();
sendPort.send([url, receivePort.sendPort]);
//
接收到返回值,
返回给调⽤者
return receivePort.first;
}