这是一个有效的陈述
StreamSubscription currentSubscription = querySelector(…).onClick.listen(….).
这里有一个侦听器分配给一个StreamSubscription。
但是当你执行queryselectorAll(..)。onClick.listen(..)时。您正在为所有查询选定的元素添加侦听器。
我注意到以下声明也有效。
StreamSubscription currentSubscription = queryselectorAll(..).onClick.listen(..)
在这里,我使用onClick侦听器将1个StreamSubscription分配给元素列表。这是如何工作的?
答案 0 :(得分:3)
您无法将多个侦听器分配给StreamSubscription
。
您的第二个语句不起作用,因为querySelectorAll()
会返回一个集合而您无法收听集合。
也许这就是你想要的:
Iterable<StreamSubscription> subscriptions =
queryselectorAll(..).map((e) => e.onClick.listen(..));
然后再
if(subscriptions != null) {
subscriptions.forEach((s) => s.cancel());
}
答案 1 :(得分:1)
您正在聆听ElementList
。我无法从文档中看到预期如何工作,所以我猜它实际上是在接收列表中所有元素的事件。
您仍然只在一个流上收听,onClick
的{{1}}流,以及您收到的ElementList
与该列表相关。