在项目中需要在控件渲染之后获取控件的坐标位置
...
/// 控件的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);
}
...
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。