计算方法中的 Flutter 更新进度
Flutter update progress in compute method
我必须将许多图像保存到设备才能制作视频。
由于保存多张图片需要很多时间和资源,所以我使用计算来保存图像。
我想显示保存图像的进度,以便用户可以注意到视频还剩多少时间。
但是,在计算中调用 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:.)
如何显示计算方法的进度?
progressDialog.update(progress: 50.0) add Double Value Here it will work
您的进度值不是两倍,所以您收到此错误
感谢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!
});
我必须将许多图像保存到设备才能制作视频。
由于保存多张图片需要很多时间和资源,所以我使用计算来保存图像。
我想显示保存图像的进度,以便用户可以注意到视频还剩多少时间。
但是,在计算中调用 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:.)
如何显示计算方法的进度?
progressDialog.update(progress: 50.0) add Double Value Here it will work
您的进度值不是两倍,所以您收到此错误
感谢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!
});