我希望能够在小部件的某个位置进行触摸或轻敲,而不需要用户显式地在该点触摸屏幕。有没有方法可以做到这一点?
我已经查看了SO答案,并且有些人建议使用“集成测试”,但是在没有与笔记本电脑物理或以某种方式连接的设备上无法执行此操作(找不到更好的措辞)。
我还尝试进行hitTest,想知道它是否实际触摸或轻敲了该点,同时与UI交互,但似乎并没有。
此外,请确保正确理解问题,因为在我阅读有关我的查询的许多答案中,很多人都回答说“你不需要它,只需调用函数/方法”。我想要在屏幕上模拟对特定指定位置的轻按,也许根据我在代码中尝试的X、Y轴。
我已经查看了SO答案,并且有些人建议使用“集成测试”,但是在没有与笔记本电脑物理或以某种方式连接的设备上无法执行此操作(找不到更好的措辞)。
我还尝试进行hitTest,想知道它是否实际触摸或轻敲了该点,同时与UI交互,但似乎并没有。
onPressed: () {
RenderObject? rb = context.findRenderObject();
if (rb is RenderBox){
final hit = BoxHitTestResult();
if (rb.hitTest(hit, position: Offset(300,500))){
print(hit.path);
}
}
},
此外,请确保正确理解问题,因为在我阅读有关我的查询的许多答案中,很多人都回答说“你不需要它,只需调用函数/方法”。我想要在屏幕上模拟对特定指定位置的轻按,也许根据我在代码中尝试的X、Y轴。
非常感谢任何方向。
如果我的问题有任何缺失,请告诉我。
编辑:(以下是我发现的更新内容)
我深入研究了Flutter代码。我找到了一些文件:
在flutter/src/gestures/hit_test.dart
下,我发现void handleEvent(PointerEvent event, HitTestEntry entry);
。我假设它会消耗一个PointerEvent
。进一步检查,
在flutter/src/gestures/events.dart
下,我找到class PointerDownEvent extends PointerEvent
,在flutter_test/src/test_pointer.dart
我找到class TestPointer
这些文件中的任何一个能为我想要做的事情提供任何启示吗?我正在检查中。
Timer(Duration(seconds: 3), () { WidgetsBinding.instance!.handlePointerEvent(PointerDownEvent(pointer: 0, position: Offset(100, 100),)); WidgetsBinding.instance!.handlePointerEvent(PointerUpEvent(pointer: 0,position: Offset(100, 100),)); });
- 当然,这两个构造函数应该添加更多属性以使其在大多数情况下正常工作。 - pskinkGestureDetector.onTap
事件 - 通过处理指针按下事件后跟随指针抬起事件来完成,只需添加一些GestureDetector
并检查它即可。 “另外,您说的两个构造函数都应该添加更多属性才能在大多数情况下正常工作是什么意思?”- 我不知道,也许需要timeStamp
?现在它设置为这个值。 - pskinkWidgetsBinding
是..可能是屏幕上所有小部件的一个实例,不知道更好的措辞。我期望它是某个小部件下的子级,并考虑了一些可能的复杂情况,但它像预期的那样工作得很好。我还将此编写为对我的问题的回答。非常感谢。 - Neo00