request<T> method

Future<DioResult<T>> request<T>(
  1. String path, {
  2. DioMethod method = DioMethod.get,
  3. Map<String, dynamic>? parmas,
  4. Map<String, dynamic>? parameters,
  5. Object? data,
  6. CancelToken? cancelToken,
  7. Options? options,
  8. Dio? dio,
  9. Map<String, dynamic>? extra = const {'needCache' : false},
  10. ProgressCallback? onSendProgress,
  11. ProgressCallback? onReceiveProgress,
})

Implementation

Future<DioResult<T>> request<T>(
  String path, {
  DioMethod method = DioMethod.get,
  Map<String, dynamic>? parmas,
  Map<String, dynamic>? parameters,
  Object? data,
  CancelToken? cancelToken,
  Options? options,
  Dio? dio,
  Map<String, dynamic>? extra = const {'needCache': false},
  ProgressCallback? onSendProgress,
  ProgressCallback? onReceiveProgress,
}) async {
  const methodValues = {
    DioMethod.get: 'get',
    DioMethod.post: 'post',
    DioMethod.put: 'put',
    DioMethod.delete: 'delete',
    DioMethod.patch: 'patch',
    DioMethod.head: 'head'
  };
  final effectiveDio = dio ?? _dio;
  if (effectiveDio == null) {
    return DioResult(
      unknown: StateError("请调用init方法初始化网络请求"),
    );
  }
  options ??= Options(
    method: methodValues[method],
    contentType: Headers.jsonContentType,
    extra: extra,
  );

  try {
    final response = await effectiveDio.request(
      path,
      data: data,
      queryParameters: parameters ?? parmas,
      cancelToken: cancelToken ?? _cancelToken,
      options: options,
      onSendProgress: onSendProgress,
      onReceiveProgress: onReceiveProgress,
    );
    return DioResult(response: response.data);
  } on DioException catch (e) {
    // debugInfo('请求失败 $e');
    return DioResult(e: e);
  } catch (e) {
    return DioResult(unknown: e);
  }
}