有没有办法模拟在小部件或屏幕的特定位置上的触摸?
Is there a way to simulate a touch on a specific position of a widget or screen?
我想在小部件上的某处进行触摸或点击,而不是让用户在该点明确触摸屏幕。有什么办法吗?
我已经检查了 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);
}
}
},
此外,请正确理解问题,因为在我阅读的有关我的查询的许多答案中,都回答了“您不需要它,只需致电 function/method”即可。我想在屏幕的某个指定位置“模拟”点击,可能是根据我在代码中尝试的 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
这些文件中的任何一个都能让我明白我想做什么吗?我正在查看。
感谢@pskink,以下代码最适合我/这种情况。我已经能够按照需要制作水龙头。非常感谢。
WidgetsBinding.instance!.handlePointerEvent(PointerDownEvent(pointer: 0, position: Offset(100, 100),)); WidgetsBinding.instance!.handlePointerEvent(PointerUpEvent(pointer: 0,position: Offset(100, 100),));
我想在小部件上的某处进行触摸或点击,而不是让用户在该点明确触摸屏幕。有什么办法吗?
我已经检查了 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);
}
}
},
此外,请正确理解问题,因为在我阅读的有关我的查询的许多答案中,都回答了“您不需要它,只需致电 function/method”即可。我想在屏幕的某个指定位置“模拟”点击,可能是根据我在代码中尝试的 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
这些文件中的任何一个都能让我明白我想做什么吗?我正在查看。
感谢@pskink,以下代码最适合我/这种情况。我已经能够按照需要制作水龙头。非常感谢。
WidgetsBinding.instance!.handlePointerEvent(PointerDownEvent(pointer: 0, position: Offset(100, 100),)); WidgetsBinding.instance!.handlePointerEvent(PointerUpEvent(pointer: 0,position: Offset(100, 100),));