2013-01-23 10 views
6

Come rimuovo un listener per un evento a cui mi sono già registrato con la nuova libreria di freccette?Rimuovi listener di eventi con la nuova libreria

Sto usando questo per attendere gli eventi con la nuova libreria:

element.onMouseMove.listen 

Qual è la versione equivalente di questo?

element.on.mouseMove.remove 

risposta

12

element.onMouseMove.listen(...) restituisce un StreamSubscription. Basta chiamare il suo metodo cancel() per smettere di ricevere eventi.

14

Oltre alla risposta di Alexandre, un esempio concreto di codice sarebbe simile a questa:

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

Questo stampa "spostato" quando si sposta il mouse sopra il "Click Me!" testo (dal campione di dardo standard). Quando si fa clic, si ferma.

Problemi correlati