使用新库删除事件侦听器

时间:2013-01-23 09:52:50

标签: dart

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

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

element.onMouseMove.listen

这个的等效版本是什么?

element.on.mouseMove.remove

2 个答案:

答案 0 :(得分:14)

除了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);    
}

这打印&#34;移动&#34;当你将鼠标移到&#34;点击我!&#34;文字(来自标准飞镖样本)。单击时,它会停止。

答案 1 :(得分:12)

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