2013-01-23 12 views
6

以前に新しいダーツライブラリに登録したイベントのリスナーを削除するにはどうすればよいですか?新しいライブラリでイベントリスナーを削除する

私は新しいライブラリでイベントをリッスンするためにこれを使用しています:

element.onMouseMove.listen 

本の同等のバージョンは何ですか?

element.on.mouseMove.remove 

答えて

12

element.onMouseMove.listen(...)は、StreamSubscriptionを返します。単にそのcancel()メソッドを呼び出してイベントの受信を停止してください。アレクサンドルの答えに加えて

14

、コード内の具体的な例は次のようになります。

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

このプリントを使用すると、上にマウスを移動すると、「移動」「私をクリックしてください!」テキスト(標準的なダーツサンプルから)。クリックすると停止します。