upload method

void upload({
  1. required String uploadUrl,
  2. required UploadProgressListener onSendProgress,
  3. required Map<String, dynamic> data,
  4. String method = 'POST',
  5. Map<String, dynamic>? headers,
  6. int fakePreProcessMaxProgress = 30,
  7. int fakePreProcessProgressPeriodInMillisecond = 500,
  8. UploadProgressListener? onSendWithFakePreProcessProgress,
  9. UploadFailureListener? onFailure,
  10. UploadCompleteListener? onComplete,
})

Implementation

void upload({
  required String uploadUrl,
  required UploadProgressListener onSendProgress,
  required Map<String, dynamic> data,
  String method = 'POST',
  Map<String, dynamic>? headers,
  int fakePreProcessMaxProgress = 30,
  int fakePreProcessProgressPeriodInMillisecond = 500,
  UploadProgressListener? onSendWithFakePreProcessProgress,
  UploadFailureListener? onFailure,
  UploadCompleteListener? onComplete,
}) {
  _worker.postMessage({
    'method': method,
    'uploadUrl': uploadUrl,
    'data': data,
    'headers': headers,
  });

  if (onSendWithFakePreProcessProgress != null) {
    _timer = Timer.periodic(Duration(milliseconds: fakePreProcessProgressPeriodInMillisecond), (Timer timer) {
      if (_fakeProgress != fakePreProcessMaxProgress) {
        _fakeProgress++;
        onSendWithFakePreProcessProgress.call(_fakeProgress);
      } else {
        _disposeTimerAndFakeProgress();
      }
    });
  }

  _worker.onMessage.listen((data) {
    _handleCallbacks(data.data,
        onSendProgress: onSendProgress,
        fakePreProcessMaxProgress: fakePreProcessMaxProgress,
        onSendWithFakePreProcessProgress: onSendWithFakePreProcessProgress,
        onFailure: onFailure,
        onComplete: onComplete);
  });
}