A framework for building convergent cross-platform Nextcloud clients using Flutter.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
799 B

part of '../neon_files.dart';
2 years ago
class DownloadTask {
DownloadTask({
required this.path,
});
final List<String> path;
final _streamController = StreamController<double>();
/// Upload progress in percent [0, 1].
2 years ago
late final progress = _streamController.stream.asBroadcastStream();
Future execute(final NextcloudClient client, final IOSink sink) async {
final completer = Completer();
final response = await client.webdav.getStream(path.join('/'));
2 years ago
var downloaded = 0;
response.listen((final chunk) async {
sink.add(chunk);
downloaded += chunk.length;
_streamController.add(downloaded / response.contentLength);
2 years ago
if (downloaded >= response.contentLength) {
completer.complete();
}
});
return completer.future;
}
}