我有一个函数需要花费相当长的时间来计算(在这种情况下,veryLongFunction
返回一个Promise)。
Future<SomeClass> veryLongFunction() {
return Future<SomeClass> (() {
// DO LONG OPERATION HERE
return result;
});
}
在那段时间内,我想显示一个加载屏幕。我已经设置好布局,以便如果isLoading == True
会显示正在加载。这一切都应该在此回调的按钮按下时发生:
void updateImage() {
// START DISPLAYING LOADING
setState(() {
_isLoading = true;
});
var promise = widget.object.veryLongFunction();
promise.then((output) =>
setState(() {
_isLoading = false;
})
);
}
我的问题是我无法从主/ UI线程中删除它(它仍然冻结UI)。我尝试使用compute
函数,但得到的结果相同。我在做什么错了?
答案 0 :(得分:3)
您需要使用isolate API,以防万一。请看这里https://api.flutter.dev/flutter/dart-isolate/Isolate-class.html