flutter 按下按钮后并行或同时计算函数

o7jaxewo  于 2023-04-13  发布在  Flutter
关注(0)|答案(1)|浏览(86)

在我的代码中,按下按钮后,调用方法,其中有三个函数的计算和导出到PDF文件的调用。其中一个函数将类的字段作为参数,通过移动应用程序中的滑块进行更改。问题是,由于计算和导出,按下按钮的动画滞后。此外,exe的CPU使用率上升了7% -15%。
该方法不返回任何东西,其工作结果只是PDF文件,所以我不需要等待它完成,而只需启动它并关心其他事件。
我想让这个方法并行或同时计算,这样它就不会减慢整个应用程序的速度,并且按下按钮的动画可以流畅地播放。

尝试次数

我尝试将函数类型改为Future并添加async,但没有帮助。
我也试过使用Isolate.run,如果我只在里面放两个函数,它就可以工作,但是如果我添加第三个函数,它将类的字段作为参数,它就停止工作了。
下面是类的简化外观和在按下按钮后调用的方法。

class Pattern{
    int scale = 10; //it's changed by slider

    void exportImage() {
        
        ImageBMP image = createImage(scale); //if I add this to Isolate it breakes
        
        var dividedImage = divideImage(image);
        
        createPDF(dividedImage);
    }
}
ff29svar

ff29svar1#

导入foundation.dart,其计算方法为:

import 'package:flutter/foundation.dart';

然后在exportImage方法中使用compute在后台完成其工作。

void exportImage() {
  compute((_) {
    ImageBMP image = createImage();
    var dividedImage = divideImage(image);
    createPDF(dividedImage);
  }, null);
}

相关问题