【发布时间】: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