计算方法中的颤振更新进度

时间:2021-01-25 06:48:40

标签: flutter dart single-threaded

我必须将许多图像保存到设备中才能制作视频。
由于保存多张图片需要花费大量时间和资源,因此我使用计算来保存图片。

我想显示保存图像的进度,以便用户可以注意到视频的剩余时间。
但是,在计算中调用 progressDialog.update(progress: progress) 会导致这样的错误

[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: Invalid argument(s): Illegal argument in isolate message : (object is a closure - Function _handleBuildScheduled@587399801:.)

如何显示计算方法的进度?

2 个答案:

答案 0 :(得分:2)

感谢pskink,我找到了解决方案。
首先,创建 RecceivePort 并将 receivePort.sendPort 传递给计算方法。

ReceivePort receivePort;

myComputeFunction(args) {
    Int someParameter = args[0]
    String otherParameter = args[1]
    SendPort port = args[2]

    //if you want to send some message
    port.send("your message here(passing double was ok)")
}


callingComputeFunction() {
    await compute(myComputeFunction, [1, "string", receivePort.sendPort]);
}

在您致电 compute 之前,请不要忘记 receivePort.listen()

receivePort.listen((dynamic message) {
      //do whatever you want to do with message!
    });

答案 1 :(得分:0)

progressDialog.update(progress: 50.0)   add Double Value Here it will work 

您的进度值不是两倍所以您收到此错误