downLoadTasks method
dynamic
downLoadTasks(
{ - required List<String> url,
})
Implementation
downLoadTasks({required List<String> url}) async {
var tempProcuess = List.generate(url.length, (index) => 0.0);
List<Download> tempDownload = List.generate(
url.length, (index) => Download(progress: 0.0, url: url[index]));
var loopSuccess = 0;
_onDownLoadTaskSubject.add(DownLoadTask(
requestUrl: url,
requestLoop: int.parse(
((tempProcuess.sum / url.length) / (100 / url.length))
.ceilToDouble()
.toStringAsFixed(0)),
progress: ((tempProcuess.sum / url.length) / 100),
isFinish: false,
download: tempDownload));
for (var i = 0; i < url.length; i++) {
String savePath = await getFilePath(url[i].split("/").last);
FileManager.deleteFile(savePath);
tempDownload[i].localUrl = savePath;
tempDownload[i].downloadState = DownloadState.downloading;
Dio dio = Dio();
dio.download(
url[i],
tempDownload[i].localUrl,
onReceiveProgress: (rcv, total) {
tempProcuess[i] = (rcv / total) * 100;
tempDownload[i].progress = tempProcuess[i];
_onDownLoadTaskSubject.add(DownLoadTask(
requestUrl: url,
requestLoop: int.parse(
((tempProcuess.sum / url.length) / (100 / url.length))
.ceilToDouble()
.toStringAsFixed(0)),
progress: ((tempProcuess.sum / url.length) / 100),
isFinish: false,
download: tempDownload));
// print(" ${((tempProcuess.sum/url.length)/(100/url.length)).ceilToDouble().toStringAsFixed(0)} / ${url.length} tempProcuess =>${((tempProcuess.sum/url.length)/100)}");
},
deleteOnError: true,
).then((_) {
loopSuccess++;
tempDownload[i].downloadState = DownloadState.finish;
if (loopSuccess == url.length) {
_onDownLoadTaskSubject.add(DownLoadTask(
requestUrl: url,
requestLoop: int.parse(
((tempProcuess.sum / url.length) / (100 / url.length))
.ceilToDouble()
.toStringAsFixed(0)),
progress: ((tempProcuess.sum / url.length) / 100),
isFinish: true,
download: tempDownload));
}
}, onError: (e) {
loopSuccess++;
print("Error ${e}");
tempDownload[i].downloadState = DownloadState.error;
tempDownload[i].progress = 100;
if (loopSuccess == url.length) {
_onDownLoadTaskSubject.add(DownLoadTask(
requestUrl: url,
requestLoop: int.parse(
((tempProcuess.sum / url.length) / (100 / url.length))
.ceilToDouble()
.toStringAsFixed(0)),
progress: ((tempProcuess.sum / url.length) / 100),
isFinish: true,
download: tempDownload));
}
});
}
}