有没有办法模拟小部件或屏幕特定位置的触摸?

2024-05-10

我想触摸或点击小部件上的某处,而不让用户在此时明确触摸屏幕。有什么办法可以做到吗?

我已经检查了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 I find class PointerDownEvent extends PointerEvent及以下flutter_test/src/test_pointer.dart I find class TestPointer

这些文件中的任何一个都可以说明我想做的事情吗?我正在检查。


感谢@pskink,以下代码最适合我/这种情况。我已经能够按照需要制作水龙头了。非常感谢。

WidgetsBinding.instance!.handlePointerEvent(PointerDownEvent(pointer: 0, position: Offset(100, 100),)); WidgetsBinding.instance!.handlePointerEvent(PointerUpEvent(pointer: 0,position: Offset(100, 100),));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法模拟小部件或屏幕特定位置的触摸? 的相关文章

随机推荐