有没有一种方法可以在抖动中获取屏幕上元素的绝对坐标?我正在按键查找元素,但我也需要它的坐标(或在游标中心)。我发现flutter驱动程序为此提供了一些方法,例如:
driver.getTopLeft(find.byValueKey('some_element_key'));
driver.getBottomRight(find.byValueKey('some_element_key'));
但是看起来返回的值是相对于父元素的。
driver.getRenderObjectDiagnostics(find.byValueKey('accounts'));
driver.getWidgetDiagnostics(find.byValueKey('accounts'));
这两种方法都返回相同的坐标。
答案 0 :(得分:0)
您将需要执行自定义数据处理函数或自定义命令,以在应用中执行以下操作:
// 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));
在此处详细了解自定义查找器和自定义命令: