flutter - 如何重新发送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 再次请求和再次不处理之前的请求,我想通过取消之前的请求并再次发送来处理它,无论他检查和取消选中复选框的速度有多快,我都会取消之前的请求并再次发送,这样应用程序就可以正常工作并根据复选框的当前状态,请指导
您宝贵的时间和指导将不胜感激
解决方案
当您发送请求时,您可以指定取消令牌(在此处和通过此示例了解更多信息),但老实说,在您取消请求之前,我会考虑以下任一情况:
- 以某种方式重做 UI,以使用户无法快速取消选中复选框或
- 以仅在填写/完成整个表单/页面或
- 以数据提前可用的方式重做逻辑并更改 UI 只会导致本地更改。
推荐阅读
- java - MainActivty 没有在 Nougat 和 Oreo 上启动
- testing - 合金阵列模型
- vue.js - 根据屏幕上的组件更改活动状态
- automation - 通过笔记本电脑上的 Whatsapp 只需单击一下即可将图像发送给联系人
- python - 在另一个类中调用实例变量
- java - 按下返回键后恢复上次打开的 pdf 页面
- javascript - 关闭replete modal后视频的音频继续播放
- kubernetes - 在 Prometheus Discovery 中配置 Kafka-zookeeper 集群(使用 Strimzi Kafka 集群)
- python - 如何将一列图像 url 转换为数据框中的 numpy 数组?
- java - 在我的活动中从服务访问对象变量