diff --git a/lib/components/task.dart b/lib/components/task.dart index 16bf509..7f292ae 100644 --- a/lib/components/task.dart +++ b/lib/components/task.dart @@ -39,7 +39,11 @@ class _TaskView extends State { switch (widget.task.base.type) { case TaskType.download: final progress = widget.task.progress as TaskDownloadProgess; - return progress.downloadedPage / progress.totalPage; + double d = progress.downloadedPage.toDouble(); + for (final e in progress.details) { + d += e.total == 0 ? 0 : e.downloaded / e.total; + } + return d / progress.totalPage; case TaskType.exportZip: final progress = widget.task.progress as TaskExportZipProgress; return progress.addedPage / progress.totalPage; diff --git a/lib/dialog/task_page.dart b/lib/dialog/task_page.dart index 370da69..09643fc 100644 --- a/lib/dialog/task_page.dart +++ b/lib/dialog/task_page.dart @@ -147,7 +147,11 @@ class _TaskPage extends State { } } if (p.failedPage == 0) { - final percent = p.downloadedPage / p.totalPage; + double downloaded = p.downloadedPage.toDouble(); + for (final e in p.details) { + downloaded += e.total == 0 ? 0 : e.downloaded / e.total; + } + final percent = downloaded / p.totalPage; final percentText = "${(percent * 100).toStringAsFixed(2)}%"; return Column(children: [ LinearPercentIndicator(