12345678910111213141516171819202122232425262728293031 |
- import 'dart:async';
- import 'package:dio/dio.dart';
- typedef OnProgress = void Function(int currentBytes, int totalBytes);
- class FileFormData extends FormData {
- FileFormData(this.onProgress) : super();
- final OnProgress onProgress;
- @override
- Stream<List<int>> finalize() {
- final byteStream = super.finalize();
- final total = length;
- int bytes = 0;
- final t = StreamTransformer.fromHandlers(
- handleData: (List<int> data, EventSink<List<int>> sink) {
- bytes += data.length;
- onProgress(bytes, total);
- if (total >= bytes) {
- sink.add(data);
- }
- },
- );
- final stream = byteStream.transform(t);
- return stream;
- }
- }
|