Flutter中如何取消任务

科技资讯 投稿 6800 0 评论

Flutter中如何取消任务

前言

    消耗用户额外数据流量。
  1. 任务回调持有全局上下文变量,未及时释放存在内存泄漏风险
  2. 异步请求过多消耗大量系统资源,拖慢 UI 线程,造成卡顿。

在 Flutter 中,如何取消已经在进行的任务呢?首先需要掌握一些基础知识。

前置知识

Future#any 方法

定义

用法

总结

    Future.any 实际就是一个 Completer,N 个 Future 叠加在一起,谁先完成算谁的。
  • Future.any 可以理解成百米赛跑,其中每个选手就是一个 Future,谁跑最快到终点谁就赢了。

Dio 取消实现解析

dio 版本

git: 67f07b86a0976c14a6e19061563832d92ed6772b

如何取消

请求中传入 CancelToken 对象,然后调用 token.cancel 方法即可

final cancelToken = CancelToken(;
dio.get(url, cancelToken: cancelToken.catchError((DioError err {
  if (CancelToken.isCancel(err {
    print('Request canceled: ${err.message}';
  } else{
    // handle error.
  }
};
// Cancel the requests with "cancelled" message.
token.cancel('cancelled';

流程解析

思路:在实际任务执行前使用 Future.any 函数插入取消任务。如果实际任务没有执行完,就有机会取消它。

说明

取消任务不仅限于网络请求。任何实际业务中包含不必要的耗时操作都可以通过 Future.any 配合 CancelToken 来实现取消。

编程笔记 » Flutter中如何取消任务

赞同 (27) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽