首页 > 解决方案 > 如何重新发送dio请求,取消先前的请求并再次发送

问题描述

  final client = Dio();

  Future<Voice> getData() async {
    final url = 'url';

    try {
      final response = await client.get(url);

      if (response.statusCode == 200) {
        return Voice.fromJson(response.data);
      } else {
        print('${response.statusCode} : ${response.data.toString()}');
        throw response.statusCode;
      }
    } catch (error) {
      print(error);
    }
  }

如何取消先前的请求并再次发送,我有一个复选框,在选中和取消选中后,我发送具有不同参数的请求,但问题是当用户快速选中和取消选中 5,10 次时,应用程序无法正常工作,因为 API 再次请求和再次不处理之前的请求,我想通过取消之前的请求并再次发送来处理它,无论他检查和取消选中复选框的速度有多快,我都会取消之前的请求并再次发送,这样应用程序就可以正常工作并根据复选框的当前状态,请指导

您宝贵的时间和指导将不胜感激

标签: flutterapidartrequestdio

解决方案


当您发送请求时,您可以指定取消令牌(在此处和通过示例了解更多信息),但老实说,在您取消请求之前,我会考虑以下任一情况:

  • 以某种方式重做 UI,以使用户无法快速取消选中复选框或
  • 以仅在填写/完成整个表单/页面或
  • 以数据提前可用的方式重做逻辑并更改 UI 只会导致本地更改。

推荐阅读