我正在使用 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;
}}}
如果您想取消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;
}
}
}
当您首先调用另一个 API 时,您可以使用该 cancelToken 来取消 API 请求,从而取消之前的请求。
cancelToken.cancel();
享受吧!