【问题标题】:Get element absolute coordinates on the screen in flutter driver在颤振驱动程序中获取屏幕上的元素绝对坐标
【发布时间】:2020-09-08 03:09:56
【问题描述】:

有没有办法在颤动中获取屏幕上元素的绝对坐标?我正在按键查找元素,但我还需要它的坐标(或至少在中心)。我发现flutter driver有一些方法可以解决这个问题,比如:

driver.getTopLeft(find.byValueKey('some_element_key'));
driver.getBottomRight(find.byValueKey('some_element_key'));

但看起来返回值是相对于父元素的。

driver.getRenderObjectDiagnostics(find.byValueKey('accounts'));
driver.getWidgetDiagnostics(find.byValueKey('accounts'));

这两种方法都返回相同的坐标。

【问题讨论】:

    标签: android flutter flutter-widget flutterdriver


    【解决方案1】:

    您将需要执行自定义数据处理函数或自定义命令,以在应用程序中执行以下操作:

            // grab the top most widget for your app, maybe first() will work instead of firstWhere()
            var element = collectAllElementsFrom(
                    WidgetsBinding.instance.renderViewElement,
                    skipOffstage: false)
                .firstWhere((element) =>
                    element.widget == <some_filtering_here>);
            // get render box
            final RenderBox box = element.renderObject as RenderBox;
            // get global coordinates
            Offset centerOffset = box.localToGlobal(box.size.center(Offset.zero));
    

    更多关于自定义查找器和自定义命令的信息:

    https://arturkorobeynyk.medium.com/using-commands-to-query-flutter-driver-for-widgets-states-and-properties-c7a5a18fea42

    https://arturkorobeynyk.medium.com/using-gestures-within-data-handler-function-of-flutter-driver-extension-6b4347be4b7c

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 2011-08-15
      • 2018-10-23
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多