flutter 中获取控件位置

在项目中需要在控件渲染之后获取控件的坐标位置

...

/// 控件的key
GlobalKey _anchorKey = GlobalKey();
/// 控件中心坐标
double dx, dy;

void initState() {
    super.initState();

    // 在控件渲染完成后执行的回调
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _findRenderObject();
    });
}

// 如果控件用了Transform平移旋转等, 获取到的坐标也会变化
 _findRenderObject() {
    RenderBox renderBox = _anchorKey.currentContext.findRenderObject();

    // offset.dx , offset.dy 就是控件的左上角坐标
    var offset = renderBox.localToGlobal(Offset.zero);

    setState(() {
      dx = offset.dx + (renderBox.size.width / 2);
      dy = offset.dy + (renderBox.size.height / 2);
    });
  }

Widget widgetContainer() {
    return Container(
          // key 要绑定在该控件上
          key: _anchorKey,
          width: 100,
          height: 100);
}

...
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容