flutter开发实战-获取Widget的大小及位置

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.

学习记录,每天不停进步。

相关推荐
谢尔登18 小时前
Webpack高级之常用配置项
前端·webpack·node.js
helloyangkl18 小时前
前端——不同环境下配置env
前端·javascript·react.js
竹秋…18 小时前
webpack搭建react开发环境
前端·react.js·webpack
以明志、18 小时前
并行与并发
前端·数据库·c#
提笔了无痕18 小时前
go web开发表单知识及表单处理详解
前端·后端·golang·web
甜味弥漫18 小时前
JavaScript新手必看系列之预编译
前端·javascript
小哀218 小时前
🌸 入职写了一个月全栈next.js 感想
前端·后端·ai编程
用户0102692718618 小时前
swift的inout的用法
前端
用户66006766853918 小时前
搞懂作用域链与闭包:JS底层逻辑变简单
前端·javascript
yinuo18 小时前
前端跨页面通讯终极指南②:BroadcastChannel 用法全解析
前端