finalize method

  1. @override
ByteStream finalize()

Freezes all mutable fields and returns a single-subscription ByteStream containing the request body.

Implementation

@override
http.ByteStream finalize() {
  super.finalize();
  final byteStream = http.ByteStream.fromBytes(bodyBytes);

  if (onProgress == null) {
    return byteStream;
  } else {
    final total = contentLength;
    var bytes = 0;

    final progressTransformer =
        StreamTransformer<List<int>, List<int>>.fromHandlers(
      handleData: (data, sink) {
        bytes += data.length;
        onProgress!(bytes, total);
        sink.add(data);
      },
    );
    final stream = byteStream.transform(progressTransformer);
    return http.ByteStream(stream);
  }
}