flutter开发实战-获取Widget的大小及位置
最近开发过程中需要获取Widget的大小及位置,这时候就需要使用到了GlobalKey了和WidgetsBinding.instance.addPostFrameCallback了
一、addPostFrameCallback
该函数的作用:
flutter中的界面组件Widget每一帧渲染在界面上,addPostFrameCallback功能是在每一帧绘制完成后再回调执行自定义的方法
例如在绘制完成后,根据获取Widget的大小及位置
dart
@override
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来获取大小、位置。
代码如下
dart
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.
学习记录,每天不停进步。