我是靠谱客的博主 温暖绿茶,最近开发中收集的这篇文章主要介绍flutter通过 GlobalKey 获取界面任意元素坐标尺寸,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最初:

需求开发中遇到要获取屏幕任意元素坐标尺寸的功能,最终实现如下:

1. example:

//...
GlobalKey _globalKey = GlobalKey();

@override
Widget build(BuildContext context) {
    //...
    ElevatedButton.icon(
      icon: Icon(Icons.send),
      label: Text("发送"),
      // onPressed: () => ddlog('pressed'),
      key: _globalKey,
      onPressed: (){
        // _showCustomPopView();
        ddlog(_globalKey.position());// Offset(143.5, 117.0)
        ddlog(_globalKey.size);// Size(88.0, 48.0)
      },
    ),
    //...
}

2. extension 封装:

import 'package:flutter/material.dart';

extension BuildContextExt on BuildContext {

  /// 获取当前组件的 RenderBox
  RenderBox? renderBox() {
    return this.findRenderObject() is RenderBox ? (this.findRenderObject() as RenderBox) : null;
  }

  /// 获取当前组件的 position
  Offset? position({Offset offset = Offset.zero}) {
    return this.renderBox()?.localToGlobal(offset);
  }
}


extension GlobalKeyExt on GlobalKey{

  /// 获取当前组件的 RenderBox
  RenderBox? renderBox() => this.currentContext?.renderBox();

  /// 获取当前组件的 position
  Offset? position({Offset offset = Offset.zero}) => this.currentContext?.position(offset: offset);

  /// 获取当前组件的 Size
  Size? get size  => this.currentContext?.size;

}

最后

以上就是温暖绿茶为你收集整理的flutter通过 GlobalKey 获取界面任意元素坐标尺寸的全部内容,希望文章能够帮你解决flutter通过 GlobalKey 获取界面任意元素坐标尺寸所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部