8

如何删除我之前使用新 dart 库注册的事件的侦听器?

我用它来监听新库的事件:

element.onMouseMove.listen

这个的等效版本是什么?

element.on.mouseMove.remove
4

2 回答 2

18

element.onMouseMove.listen(...)返回一个StreamSubscription。只需调用其cancel()方法即可停止接收事件。

于 2013-01-23T10:05:07.513 回答
16

除了 Alexandre 的回答之外,代码中的具体示例如下所示:

import 'dart:html';

void main() {
  var listener = (e) => print("Moved");

  var element = query("#text");
  var streamsub = element.onMouseMove.listen(listener); // <--- add the listener

  var reverseText= (Event event) {
    var text = query("#text").text;
    var buffer = new StringBuffer();
    for (int i = text.length - 1; i >= 0; i--) {
      buffer.add(text[i]);
    }
    query("#text").text = buffer.toString();

    streamsub.cancel(); // <----   stop listening
  };

  element
    ..text = "Click me!"
    ..onClick.listen(reverseText);    
}

当您将鼠标移到“点击我!”时,这会打印“已移动”。文本(来自标准飞镖示例)。单击时,它会停止。

于 2013-01-23T10:14:51.783 回答