我正在尝试执行重方法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)
下面是一个计算示例:
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)
根据https://docs.flutter.io/flutter/foundation/compute.html,
callback参数必须是顶级函数,而不是类的闭包,实例或静态方法。
请删除static关键字,它应该可以正常工作
| 归档时间: |
|
| 查看次数: |
3098 次 |
| 最近记录: |