2014-06-19 4 views
0

Comment obtenez-vous les mouvements de la souris, mais seulement lorsque vous avez cliqué.Mouvement de la souris, alors que la souris ne fonctionne pas dans Dart?

Je sais que cela comment vous suivre si oui ou non la souris est cliqué:

canvas.onMouseDown

et voici comment suivre les mouvements de la souris canvas.onMouseMove

donc j'essayé de faire cela :

Mais le problème est qu'il ne s'arrête pas une fois que j'arrête de cliquer. Je veux suivre le mouvement tant que la souris est en bas et une fois que la souris n'est plus en bas, je veux arrêter de suivre le mouvement de la souris. Quelqu'un peut-il m'aider? Pour une raison quelconque, cette chose continue à signaler canvas.onMouseMove même après que j'ai mis la souris.

J'ai aussi essayé ceci:

if(canvas.onMouseDown.listen(onData) == true) 

Mais apparemment, ce n'est pas comment les choses fonctionnent dans fléchette>>;.

J'ai lu plus sur les flux sur les doc api dart, quelqu'un peut-il m'expliquer à quel point est proche? Je pense que c'est comme ça que vous arrêtez de recevoir des entrées d'un événement de souris, mais comment cela se fait je ne comprends pas vraiment comment le code serait écrit pour arrêter le flux canvas.onMouseMove.listen quand canvas.onMouseUp arrive.

Répondre

1

Vous pouvez stocker une référence à la mouseMove StreamSubscription et annuler le mouseUp:

canvas.onMouseDown.listen((onData) { 

    StreamSubscription mouseMoveStream = canvas.onMouseMove.listen((onData) { 
    // Do things... 
    }); 

    canvas.onMouseUp.listen((onData) => mouseMoveStream.cancel()); 

}); 
+0

Merci! Cela a fonctionné parfaitement! :RÉ – user3505901

Questions connexes