flutter 获取组件坐标

获取居于屏幕中的坐标

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  GlobalKey globalKey = GlobalKey();

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: const Color(0xFFF5F9FA),
        appBar: AppBar(
          title: const Text('获取组件坐标'),
        ),
        body: Column(
          children: [
            ElevatedButton(
                onPressed: () {
                  RenderBox? renderBox = globalKey.currentContext!
                      .findRenderObject() as RenderBox?;
                  print('组件宽和高={"width":${renderBox!.size.width},"height":${renderBox.size.height}}');
                  Offset topLeft = renderBox!.localToGlobal(Offset.zero); //组件左上坐标
                  print('组件左上坐标=$topLeft');
                  Offset bottomRight = topLeft.translate(renderBox.size.width, renderBox.size.height); //组件右下坐标
                  print('组件右下坐标=$bottomRight');
                },
                child: const Text('获取坐标')),
            SizedBox(
              key: globalKey,
              width: 200,
              height: 300
            ),
          ],
        ));
  }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值