Dart 如何将多个侦听器分配给单个StreamSubscription?

Dart 如何将多个侦听器分配给单个StreamSubscription?,dart,Dart,这是一个有效的声明 StreamSubscription currentSubscription = querySelector(…).onClick.listen(….). 这里有一个侦听器分配给一个StreamSubscription 但是当你做一个查询时,选择all(..).onClick.listen(..)。您正在向所有查询选定元素添加侦听器 我注意到下面的陈述也是有效的 StreamSubscription currentSubscription = queryselectorAl

这是一个有效的声明

StreamSubscription currentSubscription = querySelector(…).onClick.listen(….).
这里有一个侦听器分配给一个StreamSubscription

但是当你做一个查询时,选择all(..).onClick.listen(..)。您正在向所有查询选定元素添加侦听器

我注意到下面的陈述也是有效的

StreamSubscription currentSubscription = queryselectorAll(..).onClick.listen(..) 

在这里,我使用onClick侦听器将1 StreamSubscription分配给元素列表。这是如何工作的?

您不能将多个侦听器分配给
StreamSubscription

您的第二条语句不起作用,因为
querySelectorAll()
返回一个集合,而您无法侦听集合

也许这就是你想要的:

Iterable<StreamSubscription> subscriptions = 
    queryselectorAll(..).map((e) => e.onClick.listen(..));

您不能将多个侦听器分配给
StreamSubscription

您的第二条语句不起作用,因为
querySelectorAll()
返回一个集合,而您无法侦听集合

也许这就是你想要的:

Iterable<StreamSubscription> subscriptions = 
    queryselectorAll(..).map((e) => e.onClick.listen(..));

您正在收听
元素列表
。我从文档中看不出它是如何工作的,所以我猜它正在有效地接收列表中所有元素的事件


您仍然只收听一个流,即
ElementList
onClick
流,您收到的
StreamSubscription
与该列表相关。

您收听的是
ElementList
。我从文档中看不出它是如何工作的,所以我猜它正在有效地接收列表中所有元素的事件


您仍然只在收听一个流,即
元素列表
onClick
流,您收到的
流订阅
与该列表相关。

这也是我的理解。现在使用dart 11.1,我可以在我的代码中实现这一点,并且它目前正在正确编译。侦听器中的代码也正确触发。您指的是侦听querySelectorAll的结果吗?在这种情况下,我需要亲自尝试,并检查实际情况。是的。当我对分配了多个侦听器的流订阅执行ss.cancel()时,它似乎也删除了分配给它的所有侦听器。这也是我的理解。现在使用dart 11.1,我可以在我的代码中实现这一点,并且它目前正在正确编译。侦听器中的代码也正确触发。您指的是侦听querySelectorAll的结果吗?在这种情况下,我需要亲自尝试,并检查实际情况。是的。当我对分配了多个侦听器的流订阅执行ss.cancel()时,它似乎也删除了分配给它的所有侦听器。