【问题标题】:How can I simulate a tap event on a Flutter widget?如何在 Flutter 小部件上模拟点击事件?
【发布时间】:2019-07-05 12:58:29
【问题描述】:

如何在 Flutter 小部件上模拟点击事件?

例如,如何模拟点击 Tabbar 标题?更重要的是,我如何首先找到小部件?请注意,我不想调用相关的回调,也不想使用 Flutter 测试类测试小部件,但我想在运行时模拟小部件的点击。

编辑 1:(请注意) 我不想测试小部件或调用分配给 GestureDetector.onTap 或 RaisedButton.onPressed 等的方法...

【问题讨论】:

    标签: dart flutter


    【解决方案1】:

    首先,获取RenderBox。然后只需调用hitTest 方法。任何都可以,只要它安装在树上。

    为此,您必须使用BuildContextcontext.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 是什么?
    • HitTestResult 是一个颤振小部件。它保存了 hitTest 的结果
    • 你好,我应该打电话给dispatchEvent/handleEvent吗?我听说,“真正的”点击会同时调用 hitTest 和 dispatchEvent。
    【解决方案2】:

    如果小部件具有定义的 onTap 属性,只需调用

    widget.onTap();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2021-03-07
      • 2013-03-11
      • 1970-01-01
      • 2020-11-07
      相关资源
      最近更新 更多