Dio 在开始新的 API 请求之前取消当前正在运行的 API

Avn*_*mar 6 api flutter dio

我正在使用 DIO 包进行 API 请求,但问题是当我请求另一个 API 时,而第一个 API 仍在进行中。

它不会取消第一个请求。这两个 API 同时运行,这在我的应用程序场景中并不理想。

class DioClient {

 static BaseOptions options = BaseOptions(baseUrl: baseUrl);

   Dio _dio = Dio(options);

   Future<dynamic> postFormData(
      {dynamic data, String url, dynamic header}) async {
    final data1 = data;
    var formData = FormData.fromMap(data1);

    try {
      var response = await _dio.post(url,
          options: Options(headers: header), data: formData);

      return response.data;
    } catch (e) {
      throw e;
    }}}
Run Code Online (Sandbox Code Playgroud)

Jig*_*iya 12

如果您想取消 API 请求调用,则需要使用DIO提供的取消令牌

当您进行其他 API 调用时,您需要在 dio 请求中传递取消令牌,使用该取消令牌来取消 API 请求

这是代码

    class DioClient {

  static BaseOptions options = BaseOptions(baseUrl: baseUrl);
 
 //Here is line you need
 CancelToken cancelToken=CancelToken();
 Dio _dio = Dio(options);

  Future<dynamic> postFormData(
  {dynamic data, String url, dynamic header}) async {
final data1 = data;
var formData = FormData.fromMap(data1);

try {
  //pass cancel token here
  var response = await _dio.post(url,
      options: Options(headers: header), data: formData,cancelToken: cancelToken);

  return response.data;
} catch (e) {
  throw e;
}}}
Run Code Online (Sandbox Code Playgroud)

当您首先调用另一个 API 并取消先前的请求时,请使用该 cancelToken 取消 API 请求。

cancelToken.cancel();
Run Code Online (Sandbox Code Playgroud)

享受!