Flutter Web 的“compute()”是不是在它自己的线程或 web worker 上工作,或者它是如何工作的?

Posted

技术标签:

【中文标题】Flutter Web 的“compute()”是不是在它自己的线程或 web worker 上工作,或者它是如何工作的?【英文标题】:Does Flutter Web's "compute()" work on it's own thread or web worker, or how does it work?Flutter Web 的“compute()”是否在它自己的线程或 web worker 上工作,或者它是如何工作的? 【发布时间】:2020-04-29 21:22:12 【问题描述】:

如果我这样做,例如:

FutureBuilder(
   initialData: null,
   future: compute(expensiveParsingOperation, data),
   builder: (context, snapshot) 
       if(!snapshot.hasData)
          // This doesn't spin (frozen).  The entire UI is janked until the expensive operation future completes.
          CircularProgressIndicator(); 
        else   
             Container(); 
          
);

我希望以上内容能够将expensiveParsingOperation 函数发送给网络工作者或其他东西,而不是让主线程卡顿,但这不是我观察到的情况。

【问题讨论】:

我发现了一个小型 Dart 库,可以帮助您在 Dart 中使用 Web Workers,因为 Dart 2 已停止在 Web 上进行 Isolate 集成。查看github.com/deakjahn/flutter_isolate_web 【参考方案1】:

compute此时在网络平台上什么都不做 见https://github.com/flutter/flutter/issues/33577

【讨论】:

感谢您的链接。我原以为它会包装一个网络工作者,但显然我现在必须自己管理它。 @John Evans 你是怎么做到的?我现在也需要帮助。我在互联网上几乎没有发现任何内容。

以上是关于Flutter Web 的“compute()”是不是在它自己的线程或 web worker 上工作,或者它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 调味移动应用和 Flutter web

Flutter web 最新进展: 发掘更多可能!

在 Flutter Web 中使用 Flutter 移动包

flutter web(3) 快速创建web工程并运行

Flutter搭建Web应用

Flutter Web 持久标头