upload method

void upload({
  1. ProgressCallback? onSendProgress,
  2. Success? success,
  3. Failure? failure,
  4. Completed? completed,
})

上传文件

Implementation

void upload({
  ProgressCallback? onSendProgress,
  Success? success,
  Failure? failure,
  Completed? completed,
}) async {
  if (!(await _checkNetWork())) {
    return;
  }

  final url = _buildFinalUrl();

  try {
    _options?.method = _httpType.name;
    if (_headers.isNotEmpty) {
      _options?.headers = _headers;
    }
    if (_enableGlobalHeader) {
      _options?.headers ??= {};
      _options?.headers?.addAll(_rxNet.getHeaders());
    }

    // 准备请求体
    dynamic requestBody = _rawBody;
    if (_rawBody == null && _bodyParams.isNotEmpty) {
      if (_bodyType == RequestBodyType.formData) {
        requestBody = FormData.fromMap(_bodyParams);
      } else if (_bodyType == RequestBodyType.json) {
        requestBody = _bodyParams;
      }
    }

    Response response = await _rxNet.client!.request(
      url,
      data: requestBody,
      queryParameters: _queryParams,
      options: _options,
      cancelToken: _cancelToken,
      onSendProgress: onSendProgress,
    );

    onResponse?.call(response);
    if (response.statusCode == 200) {
      success?.call(response.data, SourcesType.net);
    }
  } catch (e) {
    failure?.call(e);
  }
  completed?.call();
}