装载时颤振起重功能

时间:2020-06-08 11:19:00

标签: flutter

我有一个函数需要花费相当长的时间来计算(在这种情况下,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函数,但得到的结果相同。我在做什么错了?

1 个答案:

答案 0 :(得分:3)

您需要使用isolate API,以防万一。请看这里https://api.flutter.dev/flutter/dart-isolate/Isolate-class.html