【发布时间】:2019-07-05 12:58:29
【问题描述】:
如何在 Flutter 小部件上模拟点击事件?
例如,如何模拟点击 Tabbar 标题?更重要的是,我如何首先找到小部件?请注意,我不想调用相关的回调,也不想使用 Flutter 测试类测试小部件,但我想在运行时模拟小部件的点击。
编辑 1:(请注意) 我不想测试小部件或调用分配给 GestureDetector.onTap 或 RaisedButton.onPressed 等的方法...
【问题讨论】:
如何在 Flutter 小部件上模拟点击事件?
例如,如何模拟点击 Tabbar 标题?更重要的是,我如何首先找到小部件?请注意,我不想调用相关的回调,也不想使用 Flutter 测试类测试小部件,但我想在运行时模拟小部件的点击。
编辑 1:(请注意) 我不想测试小部件或调用分配给 GestureDetector.onTap 或 RaisedButton.onPressed 等的方法...
【问题讨论】:
首先,获取RenderBox。然后只需调用hitTest 方法。任何都可以,只要它安装在树上。
为此,您必须使用BuildContext 到context.findRenderObject()。
BuildContext context;
final renderObj = context.findRenderObject();
if (renderObj is RenderBox) {
final hitTestResult = HitTestResult();
if (renderObj.hitTest(hitTestResult, position: /* The offset where you want to "tap" */)) {
// a descendant of `renderObj` got tapped
print(hitTestResult.path);
}
}
【讨论】:
HitTestResult 是什么?
dispatchEvent/handleEvent吗?我听说,“真正的”点击会同时调用 hitTest 和 dispatchEvent。
如果小部件具有定义的 onTap 属性,只需调用
widget.onTap();
【讨论】: