颤振计算方法

Kod*_*ata 3 dart flutter

我正在尝试执行重方法compute()
我这样尝试过。后loop执行,Text窗口更新而result返回0按下按钮后,差不多吧。
有人知道我在想什么吗?

 int _counter;

  static int loop(int val) {
    int count = 0;
    for (int i = 1; i <= val; i++) {
      count += i;
    }
    return count;
  }

  Future<void> _onPressed() async {
    int result = await compute(loop, 1000000000000000000);
    setState(() {
      _counter = result;
    });
  }
Run Code Online (Sandbox Code Playgroud)

Sur*_*gch 6

下面是一个计算示例:

final sum = await compute(computationallyExpensiveTask, 1000000000);
Run Code Online (Sandbox Code Playgroud)

这是在计算隔离中运行的函数:

int computationallyExpensiveTask(int value) {
  var sum = 0;
  for (var i = 0; i <= value; i++) {
    sum += i;
  }
  print('finished');
  return sum;
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 如已接受的答案中所述,您提供的函数compute必须是顶级函数(不在类内)。

代码

这是上下文中的完整代码。圆形进度指示器停止旋转,因为当您computationallyExpensiveTask直接执行时 UI 被阻止。

在此处输入图片说明

final sum = await compute(computationallyExpensiveTask, 1000000000);
Run Code Online (Sandbox Code Playgroud)


Vil*_*P P 5

根据https://docs.flutter.io/flutter/foundation/compute.html

callback参数必须是顶级函数,而不是类的闭包,实例或静态方法。

请删除static关键字,它应该可以正常工作

  • 这可能已经过时了:**用作回调的函数必须是可以发送到隔离的函数。限定函数包括:顶级函数、静态方法、仅捕获可发送到隔离的对象的闭包。** (2认同)