鼠标移动,而鼠标向下在Dart中不起作用?

用户名

如何获得鼠标移动,但仅在单击时才能获得。

我知道这是您跟踪是否单击鼠标的方式:

canvas.onMouseDown

这就是您跟踪画布运动的方式。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 api文档上阅读了有关流的更多信息,有人可以向我解释使用紧密度如何?我认为这就是您停止从鼠标事件获取输入的方式,但是这样做是不是真的不明白在canvas.onMouseUp发生时如何编写代码来停止canvas.onMouseMove.listen流。

像素大象

您可以存储对mouseMove的引用,StreamSubscription并在mouseUp上将其取消:

canvas.onMouseDown.listen((onData) {

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

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

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章