可以使用BuildContextancestorWidgetOfExactType方法来获取最近的MaterialApp,然后使用RenderBoxlocalToGlobal方法将当前widget的相对坐标转换为全局坐标,再使用RenderBoxglobalToLocal方法将全局坐标转换为最近的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'),
    );
  }
}
Flutter 获取最近 MaterialApp 的自身 Widget 的相对坐标

原文地址: https://www.cveoy.top/t/topic/mSJp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录