Multithreading 如何在Flatter中在后台运行任务?

Multithreading 如何在Flatter中在后台运行任务?,multithreading,flutter,Multithreading,Flutter,我有一个Kotlin函数,需要一段时间,然后返回一个结果(它下载并解析一个文件) 我从颤振中运行它,如下所示: void click() { platform.invokeMethod('runMyLongFunc').then((a) { print("Done"); setState(() {}); }); } 我应该怎么做才能在后台线程中运行它(现在它在UI线程上被阻塞) 我尝试使click异步,但没有任何帮助(void click()async)。有几件事可以尝

我有一个Kotlin函数,需要一段时间,然后返回一个结果(它下载并解析一个文件)

我从颤振中运行它,如下所示:

void click() {
  platform.invokeMethod('runMyLongFunc').then((a) {
    print("Done");
    setState(() {});
  });
}
我应该怎么做才能在后台线程中运行它(现在它在UI线程上被阻塞)


我尝试使click异步,但没有任何帮助(
void click()async
)。

有几件事可以尝试

一种是让Kotlin函数在后台线程中使用Android提供的方法之一(例如,
AsyncTask
)执行其工作。您可以使用来处理JVM和Dart之间的通信,并在完成时让Kotlin代码发送消息

另一种可能是在Dart端使用Dart隔离多线程。您可以创建一个隔离,在其run方法中调用Kotlin,其他dart代码可以在UI线程上异步等待它完成,同时仍然运行事件队列。弗利特团队已经了解了这可能的工作原理

void click() async{
  var a = await platform.invokeMethod('runMyLongFunc');
  print("Done");
  setState(() {});
}

等待
有钥匙。尽管它仍然在单线程上运行。

有一些任务需要改进对该场景的支持@