[英]Can't print Flutter_downloader progress
我正在尝试使用 Flutter_downloader 让我的应用程序能够下载一些附件文件并且它工作得很好。 所以我将 Isolate 设置为 class 来整理并尝试使用进度,这样我就可以在我的 UI 中显示下载进度,但进度保持为 0。
如何解决这个问题? 下载工作正常。
Flutter 下载器隔离码:
class DownloaderIsolate {
//Callback for the Flutter_Downloader
static downloadCallback(String id, DownloadTaskStatus status, int progress) {
final SendPort send =
IsolateNameServer.lookupPortByName('downloader_send_port')!;
send.send([id, status, progress]);
}
static setupDownloaderPort({int? progress}) {
ReceivePort _port = ReceivePort();
IsolateNameServer.registerPortWithName(
_port.sendPort, 'downloader_send_port');
FlutterDownloader.registerCallback(DownloaderIsolate.downloadCallback);
_port.listen((dynamic data) {
String id = data[0];
DownloadTaskStatus status = data[1];
progress = data[2];
});
}
}
我的用户界面页面代码:
int? progress = 0;
void initState(){
DownloaderIsolate.setupDownloaderPort(progress: progress);
}
Widget build(BuildContext context) {
//Some Parents Code
//Trying to show the progress in String
Text(progress.toString()),
//Also Trying to show the progress
Text('$progress'),
}
问题可能是您需要“setState”才能让您的 UI 更新,但您不能在 isolate class 中设置状态。您可以尝试以下操作:
Flutter 下载器隔离码:
static setupDownloaderPort({required Function(int) updateProgress}) {
ReceivePort _port = ReceivePort();
IsolateNameServer.registerPortWithName(
_port.sendPort, 'downloader_send_port');
FlutterDownloader.registerCallback(DownloaderIsolate.downloadCallback);
_port.listen((dynamic data) {
String id = data[0];
DownloadTaskStatus status = data[1];
updateProgress(data[2]);
});
}
用户界面页面:
int? progress = 0;
void initState(){
DownloaderIsolate.setupDownloaderPort(updateProgress: (_p) {
progress = _p;
});
super.initState();
}
Widget build(BuildContext context) {
//Some Parents Code
//Trying to show the progress in String
Text(progress.toString()),
//Also Trying to show the progress
Text('$progress'),
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.