| 123456789101112131415161718192021222324252627282930313233343536373839 |
- import 'package:flutter/cupertino.dart';
- /// 组件位置工具类
- class WidgetLocationUtil {
- /// 获取组件的位置信息
- static WidgetInfo getWidgetLocation(GlobalKey key) {
- final context = key.currentContext;
- if (context == null) {
- throw Exception('Context is null');
- }
- final renderObject = context.findRenderObject();
- if (renderObject == null || renderObject is! RenderBox) {
- throw Exception('RenderObject is null or not a RenderBox');
- }
- final offset = renderObject.localToGlobal(Offset.zero);
- final size = renderObject.size;
- return WidgetInfo(offset, size);
- }
- }
- /// 组件信息
- class WidgetInfo {
- // 位置
- final Offset position;
- // 大小
- final Size size;
- WidgetInfo(this.position, this.size);
- @override
- String toString() {
- return 'WidgetInfo{position: $position, size: $size}';
- }
- }
|