【问题标题】:"threads" in Dart using Flutter for webDart 中的“线程”使用 Flutter for web
【发布时间】:2021-06-19 23:21:36
【问题描述】:

我目前正在对一些数学问题进行模拟。由于 Flutter 具有创建用户界面的简单方法并具有 Web 支持,因此我决定在这个项目中使用 Flutter。到目前为止,一切正常。然而,问题在于,在一个模拟中,每个步骤都需要一些时间来处理(问题大小为 128,需要大约 14 秒),在此期间整个用户界面都会冻结。我发现这可以使用隔离解决,但是这不支持 web。有没有其他方法可以解决这个问题?

【问题讨论】:

  • 也许可以看看异步编程dart.dev/codelabs/async-await
  • @TinusJackson 我试过了。问题的步骤由执行async 函数的onPressed 触发。这并没有阻止 GUI 冻结,因此我尝试将在此触发器中调用的函数也设为 async。不幸的是,这并没有帮助,无论我做多深的功能async
  • @TinusJackson 异步编程不同于多线程。在异步编程中,您的设备调用异步函数并等待它提供所需的结果。然后在后台没有进行计算。在多线程中,您的设备调用函数并开始在后台进行计算。异步函数在同一个 UI 线程上工作,而隔离函数在完全不同的线程上计算
  • @SarveshDalvi 我知道。不幸的是,网络不支持隔离。有没有办法防止我的 GUI 在后台计算时冻结?
  • @Albert 您可以参考我提供的解决方案。您使用 html 工作人员而不是隔离项

标签: flutter dart concurrency flutter-web dart-isolates


【解决方案1】:

https://dev.to/kyorohiro/isolate-at-flutter-for-web-28lg#:~:text=We%20could%20use%20isolate%20in,Use%20Worker%20instead%20of%20Isolate。这个链接会有所帮助。您可以使用在 dart 中不支持隔离时使用的工人。

这个也是:https://github.com/deakjahn/flutter_isolate_web 有一个很好的实现示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2023-01-11
    • 2021-05-17
    • 2020-04-23
    • 2021-04-02
    • 2020-09-27
    • 2021-09-12
    相关资源
    最近更新 更多