finalize method
Freezes all mutable fields and returns a single-subscription ByteStream
that will emit the request body.
Implementation
@override
http.ByteStream finalize() {
final byteStream = super.finalize();
final total = contentLength;
int bytes = 0;
final t = StreamTransformer<List<int>, List<int>>.fromHandlers(
handleData: (data, sink) {
bytes += data.length;
onProgress(bytes, total);
sink.add(data);
},
handleDone: (sink) {
sink.close();
onProgress(null, null);
},
handleError: (error, stackTrace, sink) {
sink.addError(error, stackTrace);
onProgress(null, null);
},
);
final stream = byteStream.transform(t);
return http.ByteStream(stream);
}