首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在widget中绘制后,如何获得它的宽度和高度?

在widget中绘制后,可以通过以下方法获得它的宽度和高度:

  1. 使用测量器(Measurer):在绘制widget之前,可以使用测量器来获取widget的宽度和高度。测量器可以通过调用widget的measure方法来实现。例如,在Flutter中,可以使用RenderBoxsize属性来获取widget的宽度和高度。
  2. 使用回调函数:在widget绘制完成后,可以通过回调函数来获取它的宽度和高度。在Flutter中,可以使用LayoutBuilder widget来监听widget的大小变化,并在回调函数中获取宽度和高度。
  3. 使用全局键(Global Key):可以为widget分配一个全局键,并使用该键来获取widget的宽度和高度。在Flutter中,可以使用GlobalKey来实现。通过在widget的构建方法中传递一个全局键,并在需要获取宽度和高度的地方使用该键来获取。

总结起来,以上方法可以帮助我们在widget绘制后获得它的宽度和高度。具体选择哪种方法取决于具体的开发需求和场景。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云测量器(Measurer):https://cloud.tencent.com/product/measurer
  • 腾讯云LayoutBuilder:https://cloud.tencent.com/product/layoutbuilder
  • 腾讯云全局键(Global Key):https://cloud.tencent.com/product/globalkey
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在onCreate中获取View的高度和宽度

如何在onCreate中获取View的高度和宽度 在开发过程中经常需要获取到View的宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到的值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成的,一个measure过程,一个layout过程。...只有经过“测量”和“布局”之后,View才能正确地完成绘制。而这一切是发生在onCreate方法之后的。...所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确的值的。 那应该怎么onCreate中获取View的宽高呢?...开发者可以通过View.post()方法来获取到View的宽高,该方法传递一个Runnable参数,然后将其添加到消息队列中,最后在UI线程中执行。

5.3K20

Flutte部件目录-基本部件(一)

在绘制过程中,容器首先应用给定的transform,然后绘制decoration来填满填充范围,然后绘制子组件,最后绘制foregroundDecoration,并填满填充范围。...没有子组件的容器尽可能大,除非传入的约束是无限的。在这种情况下,他们尽可能小,有子组件的容器将自己的尺寸扩大到他们的孩子大小,构造函数的宽度,高度和constraints参数将覆盖这些。...Ink,用于在Material上绘制装饰,允许InkResponse和InkWell飞溅来绘制它们。 布局部件的目录。...该行通过在溢出的边上绘制黄色和黑色条纹警告来报告此情况。如果行外有空间,溢出量将以红色字体打印。...根据弹性因子,在非零弹性因子的子部件(例如扩展)中划分剩余的垂直空间。 例如,弹性系数为2.0的子部件将获得弹性系数为1.0的子部件的两倍的垂直空间量。

7.5K20
  • 自定义View【1】

    今天我们就到代码的层次来看下如何实现和使用自定义View吧 自定义流程 ---- 在前面的文章中我们已经学习了Flutter中自定义View的简单步骤,今天我们就按照这个步骤来实现下自定义View。...paint方法就是Flutter中负责View绘制的地方,使用传递来的canvas和size即可完成对目标View的绘制。...shouldRepaint是控制自定义View是否需要重绘的,返回fals代表这个View在构建完成后不需要重绘。...可以看到我们在坐标(100,100)的位置绘制了一个半径为红色的圆。 但是,我们可以看到这个圆都被红色填充了,明明我们在前面定义画笔的宽度为5来着,怎么回填充满呢?...高度等于宽度的,对不起这是圆 绘制圆弧drawArc drawArc(Rect rect, double startAngle, double sweepAngle, bool useCenter, Paint

    94110

    Flutter跨平台移动端开发丨Column、Row、Flex、Wrap、Flow、Stack

    (类似于 Android 中的 id) mainAxisAlignment :表示子 widget 在 Column 空间内的对齐方式。...max 表示最大宽度,min 表示最小宽度,也就是所有子 widget 的宽度之和 crossAxisAlignment:表示子 widgets 在纵轴方向的对齐方式,Column 的高度等于子 widgets...max 表示最大宽度,min 表示最小宽度,也就是所有子 widget 的宽度之和 crossAxisAlignment:表示子 widgets 在纵轴方向的对齐方式,row 的高度等于子 widgets...max 表示最大宽度,min 表示最小宽度,也就是所有子 widget 的宽度之和 crossAxisAlignment:表示子 widgets 在纵轴方向的对齐方式,flex 的高度等于子 widgets...:文本绘制基线(alphabetic/ideographic) children:子 widget 集合 Expanded(扩展) 可以按照设定的比例值扩展/扩大在 row、column、flex 布局中

    2K30

    Flutter开发-容器类组件

    我们实现一个最小高度为50,宽度尽可能大的红色容器。...DecoratedBox(装饰容器) DecoratedBox可以在其子组件绘制前(或后)绘制一些装饰(Decoration),如背景、边框、渐变等。...position :此属性决定在哪里绘制Decoration,它接收DecorationPosition的枚举类型,该枚举类有两个值: background:在子组件之后绘制,即背景装饰。...foreground:在子组件之上绘制,即前景。 BoxDecoration 我们通常会直接使用BoxDecoration类,它是一个Decoration的子类,实现了常用的装饰元素的绘制。...Button,通常悬浮在页面的某一个位置作为某种常用动作的快捷入口 SafeArea 使用 SafeArea 可以让 child widget 在顶部和底部腾出足够的空间方便处理 iPhoneX 这类的手机

    3.6K20

    【Flutter 专题】70 图解自定义 ACEStepper 步进器

    支持滑动,不限制整体宽度; Step 中按钮支持单个显隐性处理; Stepper 中每个 Step 内容支持全部展示和单独展示; 其他自定义 ThemeData; ?...和尚准备在 Stepper 基础上进行扩展,首先要了解 Stepper 的构成,根据一切都是 Widget 的思想,和尚绘制了一个基本的构成图: ? 新特性扩展 1....} 绘制圆点虚线,和尚准备支持自定义连线宽度(直线/虚线),因此圆点半径根据宽度获得,圆点之间的距离和尚尝试的是一个圆点大小,在一段长度中绘制 _circleLength / radius / 4...横向滑动 分析源码,Stepper 横向方式是将 Step 放置在 Row 中,此时若 Step 数量过多会造成宽度溢出;和尚调整存储方式,将自定义的 ACEStepper 放置在横向 ListView...Content 连接方式 在纵向 Stepper 中 Content 的展示对应的连线是单独的连线,与上下两个 Header 进行衔接;但 Content 大小并不固定,而和尚绘制的圆点虚线需要获取其高度进行绘制

    1.3K21

    flutter系列之:按比例缩放的AspectRatio和FractionallySizedBox

    简介 我们在构建UI的时候,为了适应不同的屏幕大小,通常需要进行一些自适应的配置,而最常见的自适应就是根据某个宽度或者高度自动进行组件的缩放。...AspectRatio的逻辑是首先获得最大的width或者height,然后根据width或者height来计算height和width。...首先是一个无限宽度但是高度为150的container,然后再container的child中使用了AspectRatio组件,如下所示: Widget build(BuildContext context...对于aspectRatio的父widget来说,他的宽度是无限的,他的高度是150,所以aspectRatio的高度是可以确定的,也就是150,我们根据aspectRatio的比例,计算出它的width...在它的child中使用的aspectRatio=2.0。

    1.6K20

    flutter系列之:按比例缩放的AspectRatio和FractionallySizedBox

    简介 我们在构建UI的时候,为了适应不同的屏幕大小,通常需要进行一些自适应的配置,而最常见的自适应就是根据某个宽度或者高度自动进行组件的缩放。...AspectRatio的逻辑是首先获得最大的width或者height,然后根据width或者height来计算height和width。...首先是一个无限宽度但是高度为150的container,然后再container的child中使用了AspectRatio组件,如下所示: Widget build(BuildContext context...对于aspectRatio的父widget来说,他的宽度是无限的,他的高度是150,所以aspectRatio的高度是可以确定的,也就是150,我们根据aspectRatio的比例,计算出它的width...在它的child中使用的aspectRatio=2.0。

    2.2K00

    Flutter 视图布局-前言

    但我能做到的是将我在学习过程中我遇到的问题、踩到的坑、理解上的问题解决完后,再重新整理输出出来,以便有需要或有兴趣学的少侠们提供帮助参考。 Ok,以上就是我瞎逼逼的废话了。...Baseline 根据子项的基线对它们的位置进行定位的 Widget。 IntrinsicWidth 一个 Widget,它将它的子元素的宽度调整其本身实际的宽度。...Transform 在绘制子元素之前应用转换的 Widget。 Offstage 一个布局 Widget,可以控制其子元素的显示和隐藏。...OverflowBox 对其子项施加不同约束的 Widget,它可能允许子项溢出父级。 SizedBox 一个特定大小的盒子。这个 Widget 强制它的孩子有一个特定的宽度和高度。...如果宽度或高度为NULL,则此 Widget 将调整自身大小以匹配该维度中的孩子的大小。

    2.3K110

    Flutter | 布局组件

    在 Flutter 中 Element 树才是最终的绘制树,Element 树是通过 Widget 树来创建的 (通 Widget.createElement()) ,Widget 其实就是 Element...Colum 的宽度取决于其子 Widget 中宽度最大的 Widget,所以 hi 会被显示在 world 的中间部分 Row 和 Column 都只会在主轴上占用尽可能的最大空间,而纵轴的长度取决于他们最大子...Widget 的长度 如何让 hi 和 world 在屏幕中间对齐呢,有如下两种办法: class ColumnTest extends StatelessWidget { @override...Spacer 的功能是占用指定比例的空间,实际上它只是 Expanded 的一个包装类 流式布局 Wrap ,Flow 在使用 Row 和 Column 时,如果子 Widget 超出 屏幕范围,则会报溢出错误...child, }) 复制代码 left,top,right,bottom 分别代表 tack 四个边的距离,widget 耦合 height 用于指定需要定位元素的宽度和高度。

    2.7K30

    Flutter布局指南之深入理解BoxConstraints

    因此,在这篇文章中,让我们试着了解约束条件是如何工作的,以及对Widget尺寸的影响。 那么,Flutter中的约束究竟是什么?...Flutter中的约束是对一个Widget的宽度和高度的简单限制 这些限制是通过BoxConstraints对象指定的。...❝BoxConstraints.loose( Size size ) ❞ 这个构造函数设置了Loose约束,最小宽度和最小高度为0,最大宽度和最大高度为size对象所提供的,也就是说,一个Widget可以在...下面是Container在不同条件下的最终尺寸: 案例:Container有无限制的父约束,没有孩子,没有对齐。 ❝Container试图根据它给定的高度和宽度尽可能地缩小尺寸。...Widget中,例如,列的父Widget对它设置了Unbounded约束,而这个column中的一个子Widget的高度被设置为double.infinity,即无界高度约束,那么Flutter将出错

    2.1K20

    Flutter —布局系统概述

    这次,我试图更好地理解“布局系统的工作原理”,并回答以下问题: 我的小部件的尺寸看起来不合适,怎么回事? 我只想将Widget放置在特定位置,但是没有任何属性可以控制它,为什么呢?...但是,我们将对最重要的内容进行很好的概述,力图将一切可视化。 “两个阶段” 布局系统和约束 首先,小部件是Flutter SDK的构建块,但它们不负责将其自身绘制到屏幕中。...每个RenderBox还将与一个BoxConstraints对象相关联,该对象包含四个值:最大|最小宽度和最大|最小高度。RenderBox可以选择具有所需的任何大小,但它必须遵守这些值/约束。...注意,max | min的宽度和高度都相等;因此,runApp使用了严格的约束-通过这样做,MyApp除了选择屏幕上的可用空间外,在选择其大小时将别无选择。 然后将约束向下传播到Widget树。...而是,AppBar以首选/默认大小响应Scaffold:高度= 80,宽度= 392(受接收到的约束的约束) 获得AppBar的大小后,Scaffold继续下一个子项:Center 好的,这里发生了很多事情

    1.7K20

    Flutter原理:三棵重要的树(渲染过程、布局约束、应用视图的构建等)

    读者也可以把它看作一个更为实际控件,因为在我们的手机屏幕上显示的控件并非我们在代码中所写的 Widget,我们在代码中所使用的像 Container、Text 等这类组件和其属性只不过是我们想要构建的组件的配置信息...方法生成,该对象内部提供多个属性及方法来帮助框架层中的组件如何布局渲染。...子节点接受到来自父节点的约束后,会依据它产生自己具体的布局信息,如父节点规定我的最小宽度是 500 的单位像素,子节点按照这个规则可能定义自己的宽度为 500 个像素,或者大于 500 像素的任何一个值...该约束规定了允许每个子节点的最大和最小宽度和高度。如下图,父节点传入 Min Width 为 150,Max Width 为 300 的 BoxConstraints: ?...当子节点接受到该约束,便可以取得上图中绿色范围内的值,即宽度在 150 到 300 之间,高度大于 100,当取得具体的值之后再将取得具体的大小的值上传给父节点,从而达到父子的布局通信。

    1.8K40

    Flutter | 容器组件

    = double.infinity, //最大宽度 this.minHeight = 0.0, //最小高度 this.maxHeight = double.infinity //最大高度 }...position:此属性决定在哪里绘制 Decoration,它接受 DecorationPostition 的枚举类型,该枚举有两个类型: background:在子组件之后绘制 foreground...Text 被放大后,占用的空间依然是红色的部分,所以第二个 Text 就会挨着红色的部分,最终就会出现重合 由于矩阵变换只会作用在绘制阶段,所以在某些场景下,在 UI 需要变化是,可以通过矩阵变换来达到视觉上的...,通过源码可以看到,它正是前面我们介绍过得多种组件组合而成,在 Flutter 中,Container 组件也是组合优先于继承的实例 Padding 和 Margin Container( margin...80 * 80 的,这是因为剪裁是在 layout 完成后的绘制阶段进行的,所以不会影响 组件的大小,这个 Transform 原理是相似的。

    5.6K10

    【Flutter 组件】001-关于 Widget 的一切

    就是说, Widget 其实并不是表示最终绘制在设备屏幕上的显示元素,所谓的配置信息就是 Widget 接收的参数,比如对于 Text 来讲,文本的内容、对齐方式、文本样式都是它的配置信息。...真正的布局和渲染逻辑在 Render 树中,Element 是 Widget 和 RenderObject 的粘合剂,可以理解为一个中间代理。...StatelessElement 用于不需要维护状态的场景,它通常在 build 方法中通过嵌套其他 widget 来构建 UI,在构建过程中会递归的构建其嵌套的 widget 。...实际上,context 是当前 widget 在 widget 树中位置中执行”相关操作“的一个句柄(handle),比如它提供了从当前 widget 开始向上遍历 widget 树以及按照 widget...),原因是在初始化完成后, widget 树中的InheritFrom widget也可能会发生变化,所以正确的做法应该在在build()方法或didChangeDependencies()中调用它。

    11310
    领券