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);
}

...

你可能感兴趣的:(flutter 中获取控件位置)