在 Flutter 中,可以使用 GlobalKey 来获取 Widget 的宽度,而不需要进行绘制。具体步骤如下:

  1. 创建一个 GlobalKey 对象,用来标识要获取宽度的 Widget。
GlobalKey _key = GlobalKey();
  1. 在 Widget 的 build 方法中,给要获取宽度的 Widget 添加 key 属性。
Container(
  key: _key,
  ...
)
  1. 在 Widget 树构建完成后,可以通过 GlobalKey 对象获取 Widget 的宽度。
 double width = _key.currentContext.size.width;

注意:要确保 Widget 已经被构建完成,否则获取宽度会返回 null。可以使用 WidgetsBinding.instance.addPostFrameCallback 来在 Widget 构建完成后执行回调函数。

完整示例代码如下:

class MyWidget extends StatelessWidget {
  GlobalKey _key = GlobalKey();

  @override
  Widget build(BuildContext context) {
    WidgetsBinding.instance.addPostFrameCallback((_) {
      double width = _key.currentContext.size.width;
      print('width: $width');
    });

    return Container(
      key: _key,
      width: 200,
      height: 100,
      color: Colors.blue,
    );
  }
}
Flutter 获取 Widget 宽度不绘制技巧 | GlobalKey 方法

原文地址: https://www.cveoy.top/t/topic/jAyy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录