在Dart UI中,我有一个按钮[submit]来启动一个长异步请求.[submit]处理程序返回future .接下来,按钮[submit]被按钮[cancel]替换,以允许取消整个操作.在[cancel]处理程序中,我想取消长操作.如何取消提交处理程序返回的future ?我找不到办法.

推荐答案

据我所知,没有办法取消future .但是有一种方法可以取消Stream订阅,也许这可以帮助您.

在按钮上调用onSubmit将返回StreamSubscription对象.您可以显式存储该Object,然后在其上调用cancel()来取消流订阅:

StreamSubscription subscription = someDOMElement.onSubmit.listen((data) {

   // you code here

   if (someCondition == true) {
     subscription.cancel();
   }
});

稍后,作为对某些用户操作的响应,您可能可以取消订阅:

Dart相关问答推荐

dart 日期时差(分钟)

在异步方法中,有没有更优雅的方式在DART中等待!=NULL?

停止从事件侦听器内部侦听事件

一键式 Flutter 工具提示

Flutter:Firebase FieldValue.serverTimestamp() 到 DateTime 对象

错误:非抽象类InternalSelectableMathState

在 Flutter 中将图像与左上角对齐

如何在 Flutter DropDown 按钮中搜索

使用where在对象列表中搜索 dart 中的特定对象

Flutter 在 main 中读取共享首选项,然后决定哪个启动页面?

设置Dart中非常量的默认值

如何在没有脚手架的情况下显示snackBar

如何为 macos 桌面应用启用 Flutter 上网权限?

在 Dart 中发送 SMTP 邮箱

Dart 中的构造函数和初始化列表有什么区别?

如何在 Dart 中使用 char 类型?

dart,overloading[] 运算符?

Dart 是否支持函数式编程?

如何在 Dart 中运行重复出现的函数?

在 Dart 中验证邮箱地址?