在项目中需要在控件渲染之后获取控件的坐标位置
...
/// 控件的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);
}
...