Flutter 使用 GlobalKey 获取 Widget 的尺寸和位置

4 min read

Flutter 中可以使用 GlobalKey 来获取 Widget 的尺寸和位置。

首先,在要获取尺寸和位置的 Widget 上设置 GlobalKey:

final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey();
 
Scaffold(
  key: _scaffoldKey,
  ...
)

然后,可以使用 GlobalKey 的 currentContext 属性来获取 Widget 的 BuildContext,从而获取 Widget 的尺寸和位置:

final RenderBox renderBox = _scaffoldKey.currentContext.findRenderObject() as RenderBox;
final size = renderBox.size; // 尺寸
final position = renderBox.localToGlobal(Offset.zero); // 位置

其中,localToGlobal 方法可以将 Widget 的本地坐标转换为全局坐标。如果需要获取子 Widget 的尺寸和位置,可以使用 GlobalKey 和子 Widget 的 GlobalKey 实现。