Flutter 获取 Widget 宽度不绘制技巧 | GlobalKey 方法
在 Flutter 中,可以使用 GlobalKey 来获取 Widget 的宽度,而不需要进行绘制。具体步骤如下:
- 创建一个 GlobalKey 对象,用来标识要获取宽度的 Widget。
GlobalKey _key = GlobalKey();
- 在 Widget 的 build 方法中,给要获取宽度的 Widget 添加 key 属性。
Container(
key: _key,
...
)
- 在 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,
);
}
}
原文地址: https://www.cveoy.top/t/topic/jAyy 著作权归作者所有。请勿转载和采集!