如何进行鼠标移动,但只有在您点击后才能进行鼠标移动。
我知道这是跟踪鼠标是否被点击的方式:
canvas.onMouseDown
这就是你跟踪鼠标移动canvas.onMouseMove
的方法所以我试着这样做:
//when the mouse is clicked
canvas.onMouseDown.listen((onData){
print("Mouse is down!" + "(" + onData.client.x.toString() + ", " + onData.client.y.toString() + ")");
//check where it's being dragged
canvas.onMouseMove.listen((onData){
mouseMovementsDown(onData.client.x, onData.client.y);
});
});
但问题是,一旦我停止点击,它就不会停止。我想跟踪移动只要鼠标停下来,一旦鼠标不再向下,我想停止跟踪鼠标的移动。谁能帮我?出于某种原因,即使我把鼠标放好,这件事仍继续报告canvas.onMouseMove。
我也试过这个:
if(canvas.onMouseDown.listen(onData) == true)
但显然,dart>中的情况并非如此。&gt ;;
我在dart api文档上阅读了更多关于流的内容,有人可以向我解释一下如何使用它吗?我认为它说你是如何停止从鼠标事件中获取输入的,但是如何做到这一点我真的不明白如何编写代码以在canvas时停止canvas.onMouseMove.listen流。 onMouseUp发生。
答案 0 :(得分:1)
您可以存储对mouseMove StreamSubscription
的引用,并在mouseUp上取消它:
canvas.onMouseDown.listen((onData) {
StreamSubscription mouseMoveStream = canvas.onMouseMove.listen((onData) {
// Do things...
});
canvas.onMouseUp.listen((onData) => mouseMoveStream.cancel());
});