Flutter 获取最近 MaterialApp 的自身 Widget 的相对坐标
可以使用BuildContext的ancestorWidgetOfExactType方法来获取最近的MaterialApp,然后使用RenderBox的localToGlobal方法将当前widget的相对坐标转换为全局坐标,再使用RenderBox的globalToLocal方法将全局坐标转换为最近的MaterialApp的相对坐标。
示例代码:
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final materialApp = context.ancestorWidgetOfExactType(MaterialApp);
final renderBox = context.findRenderObject() as RenderBox;
final position = renderBox.localToGlobal(Offset.zero);
final materialAppRenderBox = materialApp?.findRenderObject() as RenderBox;
final relativePosition = materialAppRenderBox?.globalToLocal(position);
return Container(
child: Text('Relative position: $relativePosition'),
);
}
}
原文地址: https://www.cveoy.top/t/topic/mSJp 著作权归作者所有。请勿转载和采集!