flutter开发实战-获取Widget的大小及位置
最近开发过程中需要获取Widget的大小及位置,这时候就需要使用到了GlobalKey了和WidgetsBinding.instance.addPostFrameCallback了
一、addPostFrameCallback
该函数的作用:
flutter中的界面组件Widget每一帧渲染在界面上,addPostFrameCallback功能是在每一帧绘制完成后再回调执行自定义的方法
例如在绘制完成后,根据获取Widget的大小及位置
void initState() { // TODO: implement initState super.initState(); WidgetsBinding.instance?.addPostFrameCallback((timeStamp) { if (mounted) { updateElementFrame(); } }); }
二、GlobalKey
GlobalKey可以方便地帮助我们获取指定Widget的状态、大小、位置,还可以很方便用来调用指定Widget的方法。
经常用在父子组建Widget调用:https://blog.csdn.net/gloryFlow/article/details/131960753
这里使用GlobalKey来获取大小、位置。
代码如下
void updateElementFrame() { if (mounted) { GlobalKey globalKey = widget.key as GlobalKey; if (globalKey.currentContext != null) { RenderBox renderBox = globalKey.currentContext!.findRenderObject() as RenderBox; // offset.dx , offset.dy 就是控件的左上角坐标 Offset offset = renderBox.localToGlobal(Offset.zero); //获取size Size size = renderBox.size; } } }
三、小结
flutter开发实战-获取Widget的大小及位置。需要使用到了GlobalKey了和WidgetsBinding.instance.addPostFrameCallback.
学习记录,每天不停进步。
来源地址:https://blog.csdn.net/gloryFlow/article/details/132197786