Flutter 并行网络调用

Flutter Parallel Network call

我是 flutter 的新手。我需要在单个屏幕中调用 5 API 个网络调用。我使用 Async/await 时花费了很长时间。我们如何使用 isolate 或其他类似的东西在单独的线程上并行执行它?

您可以使用 dio 包并调用多个并发 API 请求,请查看文档:

Package: https://pub.dev/packages/dio

您可以使用 Future.wait()

Here is the answer with an example

您可以为此目的使用 isolate isolate 是 dart 中的一种多线程。 Isolate 创建一个新线程并在新线程上执行操作,以便分配负载。您不能将变量作为数据来回发送,而是使用端口发送消息。

这里是一个简单的隔离示例,调用 API 并使用端口将数据发送回主线程。

首先让我们创建一个函数,它将作为 isolate 的入口点:

static entryPoint(SendPort sendPort)async{
    var response = await http.get('https://www.thecocktaildb.com/api/json/v1/1/search.php?s=margarita');
    sendPort.send(response.body); //sending data back to main thread's function
}

现在让我们创建隔离:

static void callApi()async{
    var recievePort = new ReceivePort(); //creating new port to listen data
    await Isolate.spawn(entryPoint, recievePort.sendPort);//spawing/creating new thread as isolates.
    recievePort.listen((message) {  //listening data from isolate
      print(message);
    });
}