Я пытаюсь сделать индикатор выполнения для загружаемого файла, но если я добавляю слушателя к StreamedResponse
, конвейер работает, но не завершает свое будущее.
final client = new http.Client();
http.StreamedResponse response = await client.send(http.Request("GET", Uri.parse('someurl')));
var received = 0;
var length = response.contentLength;
//if I remove this listener, the await below gets completed
var listen = response.stream.listen((List<int> bytes) {
received += bytes.length;
print("${(received / length) * 100} %");
});
var sink = downloadFile.openWrite();
await response.stream.pipe(sink);
listen.cancel();
sink.close();
На github они уже сообщили кому-то, что он должен работать, но на Документах StreamedResponse остается, что This should always be a single-subscription stream.
.Таким образом, добавление слушателя для вычисления процента, похоже, приводит к ошибкам в StreamedResponse
трубе.Есть идеи, как заставить это работать?