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

Column的MainAxisSize.min和ListView的shrinkWrap: true在具有全高的容器中不起作用

在具有全高的容器中,Column的MainAxisSize.min和ListView的shrinkWrap: true属性不起作用的原因是,它们的作用范围不包括容器的高度。

首先,让我们了解一下Column和ListView的概念和用法:

  1. Column:Column是Flutter中的一个布局组件,用于在垂直方向上排列子组件。它可以包含多个子组件,并根据需要自动调整它们的大小。MainAxisSize属性用于控制Column在主轴方向上的尺寸,有两个选项可用:MainAxisSize.max和MainAxisSize.min。当设置为MainAxisSize.max时,Column会尽可能地占据主轴的所有可用空间;当设置为MainAxisSize.min时,Column会根据子组件的大小来确定自身的尺寸。
  2. ListView:ListView是Flutter中的一个滚动组件,用于在一个可滚动的列表中显示子组件。它可以包含多个子组件,并根据需要自动调整它们的大小。shrinkWrap属性用于控制ListView在垂直方向上是否根据子组件的总高度来确定自身的高度。当设置为true时,ListView会根据子组件的总高度来确定自身的高度;当设置为false时,ListView会尽可能地占据垂直方向的所有可用空间。

然而,在具有全高的容器中,例如一个具有确定高度的父容器,Column的MainAxisSize.min和ListView的shrinkWrap: true属性将不起作用。这是因为父容器已经确定了高度,而不会根据子组件的大小来调整自身的尺寸。因此,无论如何设置这些属性,它们都不会影响到父容器的高度。

解决这个问题的一种方法是使用Expanded组件将Column或ListView包装起来。Expanded组件可以将子组件的尺寸扩展到可用空间的最大值。通过将Column或ListView包装在Expanded组件内部,它们将能够填充父容器的高度,并且MainAxisSize.min和shrinkWrap: true属性将起作用。

以下是一个示例代码:

代码语言:txt
复制
Container(
  height: 200, // 父容器的高度
  child: Column(
    mainAxisSize: MainAxisSize.min,
    children: [
      Expanded(
        child: ListView(
          shrinkWrap: true,
          children: [
            // 子组件列表
          ],
        ),
      ),
    ],
  ),
)

在这个示例中,父容器的高度被设置为200,Column的MainAxisSize属性被设置为MainAxisSize.min,ListView的shrinkWrap属性被设置为true。通过将ListView包装在Expanded组件内部,它将填充父容器的高度,并且Column和ListView的属性将按预期起作用。

请注意,以上示例中没有提及任何特定的腾讯云产品或链接地址。如果您需要了解腾讯云的相关产品和服务,请访问腾讯云官方网站或咨询腾讯云的客服人员。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 经典布局:如何定义子控件容器排版位置?

    之前文章,我们一起学习了构建视图基本元素,文本Text、图片Image按钮,用于展示一组连续视图元素ListView,以及处理多重嵌套可滚动视图CustomScrollView,等等。...在这个示例,我将一段较长文字,包装在一个红色背景、圆角边框、固定宽Container,并分别设置了Container外边距(距离其父Widget边距)内边距(距离其子Widget边距)...在下面的代码,我把四个分别设置了不同颜色Container加到Row与Column: //Row用法示范 Row( children: [ Container...Column显示效果如下: ? 可以看到,单纯使用RowColumn控件,子Widget尺寸较小时,无法将容器填满,视觉样式比较难看。...可以看到,我们设置了主轴大小为MainAxisSize.min之后,Row宽度变得其子Widget一样大,因此再设置主轴对齐方式也就不起作用了。

    4.6K30

    【Flutter 专题】130 图解 DraggableScrollableSheet 可手势滑动菜单栏

    和尚发现在长期未登陆小米应用市场时,再次登陆会有可滑动半屏底部菜单,供用户方便下载推广;而在 Flutter 这个半屏底部菜单并不是一个简单 BottomSheet 完成,可以通过 DraggableScrollableSheet...StatefulWidget 小组件,通过 FractionallySizedBox 以父 Widget 为基数,可设置宽高比例容器构建子内容; 案例尝试 1. builder ScrollableWidgetBuilder...构造器作为必选字段,用于 DraggableScrollableSheet 显示可滑动子内容;其中返回内容需为可滑动 ScrollableWidget,例如 ListView / GridView...( physics: NeverScrollableScrollPhysics(), shrinkWrap: true, itemCount:...小扩展 之前分析 DraggableScrollableSheet 时其源码采用了 FractionallySizedBox 比例容器,和尚简单了解一下,其源码非常简单,通过设置 heightFactor

    1.3K20

    【Flutter 专题】109 图解自定义 ACERadio 单选框

    Radio 单选框在日常应用很常见,Flutter 提供单选框与 Android 提供略有不同,和尚简单了解一下并对其进行部分扩展; ?...Radio Radio 单选框是一组选项,互斥选择单个选项; 源码分析 class Radio extends StatefulWidget { const Radio({ Key...、选中状态不可选中状态;onChanged 为单选框选中回调,根据 value groupValue 匹配是否为选中状态;当 onChanged 为 null 时,单选框为不可选中状态; return...materialTapTargetSize materialTapTargetSize 为默认 Radio 可选中点击最小范围;主要分为 padded shrinkWrap 两种状态,分析源码可以看到两者尺寸相差...选中框按钮尺寸 Radio 单选框尺寸是固定,和尚为了更方便修改,添加了 radioSize 尺寸来动态修改按钮尺寸,且动态设置按钮尺寸之后依旧支持最小点击范围三种样式; return Column

    1.6K40

    【Flutter 专题】40 日常小问题小结 (一)

    ,右侧垂直两张小图,水平方向 1:1 均分,和尚用 Expanded 配合 flex 嵌套权重时遇到如下问题,于是重新研究一下权重使用; ?...尝试一: 根 Widget 尝试如下,Expanded 与 Flexible 均正常,默认填满布局,与和尚预计相同; 和尚理解 Container 未设置宽,但 Row/...尝试二: 大多数情况页面元素较多,最外层可能会嵌套 ListView/Column 或其他 Widget,此时用 Expanded 便会出现如上问题;日志建议使用 Flexible Column...扩展: Flexible FlexFit 分两种,嵌套权重时只可以用默认 loose,在其他情况下,和尚测试差别不大;但和尚理解官方说明:tight 模式是强制填补剩余空间,而 loose...BuildContext,但是和尚又出现新问题,不可在 Builder 返回无大小 Container;仔细找了很久发现 Builder 需要 return 一个 Widget,太粗心; ?

    83431

    Flutter构建布局 顶

    第6步:把它放在一起 最后一步,你将这些碎片组装在一起。 这些小部件安排在ListView,而不是列,因为小设备上运行应用程序时,ListView会自动滚动。...容器是一个小部件,允许您自定义其子部件。 如果要添加填充,边距,边框或背景色,请使用容器来命名其某些功能。 在这个例子,每个文本小部件放置容器以添加边距。...如果所有布局小部件带有一个子元素(例如Center或Container),则它们具有一个child属性,如果它们带有小部件列表(例如Row,ColumnListView或Stack),则它们具有children...,可以变量函数实现UI各个部分。...Flutter,一张卡片具有稍微圆润角落阴影,使其具有3D效果。 更改卡片elevation属性可让您控制投影效果。

    43.1K10

    第128期:Flutterflex布局组件(row column

    如果我们有几个组件,并且希望空间不足时候有个滚动效果,那么我们就可以考虑使用ListView组件。 Row组件类有这么几个属性: children:要进行布局子组件。...如果设置交叉轴属性为stretch,则改用与传入最大高度匹配紧密垂直约束。 根据弹性系数具有非零弹性系数(例如,展开弹性系数)子级之间划分剩余水平空间。...当传入组件没有具体垂直约束边界(高度)时,我们可能会遇到各种问题,比如: 我们不用Expanded组件对Cloumn组件进行包裹,而Cloumn组件内容超出了容器本身限制。...根据弹性系数具有非零弹性系数(子级之间划分剩余垂直空间。例如,弹性系数为2.0子级将获得两倍于弹性系数为1.0子级垂直空间量。...如果mainAxisSize属性为mainAxisSize.min,则Column高度为子对象高度之。

    1.3K20

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

    如果部件具有alignment,并且父级提供了无界约束,那么容器会尝试围绕该子部件调整自己大小。...Column部件不滚动(并且通常认为宁愿列中有更多子项也不使用适合可用空间是错误)。 如果您有一行小部件,并希望它们空间不足情况下能够滚动,请考虑使用ListView。...当一个列有一个或多个Expanded或Flexible子元素,并且被放置另一列,或者一个ListView,或者在其它没有为该列提供最大高度限制上下文中时,你会在运行时说这个异常存在弹性子部件,...通常解决方案是使用ListView而不是Column垂直空间有限时使内容滚动。 布局算法 本节介绍框架如何呈现一列。 有关Box布局模型介绍,请参阅BoxConstraints。...如果mainAxisSize属性为MainAxisSize.min,那么Column高度就是子级高度总和(受传入约束条件影响)。

    7.5K20

    Flutter一切皆widget但是不要将所有东西放入一个widget

    这是 Flutter 口头禅,它揭示了这个非常好 SDK 内在力量! 当我们widgets目录,我们可以看到很多小部件,如Padding,Align,SizedBox,等。...但是当我阅读 一些我互联网上找到或由新采用者编写源代码时,有一件让我震惊事情:拥有大量build**`**方法趋势,实例化很多小部件!我发现这很难阅读、理解维护。...); } } 第二个版本,我们有一个大build方法小部件,它很难阅读、理解维护。...应用程序甚至另一个应用程序另一个页面中共享布局一部分也将更加容易。...我们可以 Visual Studio Code 中使用Dart扩展提供stlessstful片段, 为了我自己需要,我创建了新片段,称为slesssful,这样我工作效率比以往任何时候都

    1.2K10

    Flutter | 滚动组件,ListView,GridVIew等

    可滚动组件中有很多都支持 Sliver 延时构建模型,如 ListView,GridView ,但是也有不支持改模型 SingleChildScrollView 主轴纵轴 滚动组件坐标描述,...当 ListView 一个无边界(滚动方向上)容器时, shrinkWrap 必须为 true addAutomaticKeepAlives:该属性表示是否将列表项(子组件) 包裹在 AutomaticKeepAlive...组件; 典型一个懒加载列表,如果将列表包裹在 AutomaticKeepAlive 改了吧划出视口时,他也不会被 GC 回收(垃圾回收),他会使用 KeepAliveNotification...没有应用基于 Sliver 懒加载模型 实际上通过默认构造函数创建 ListView 使用 SingleChildScrolLView + Column 方式没有本质区别,下面看一个栗子: ListView...可以使用 Fix 来完成, 弹性布局,可以使用你Expanded 来自动拉伸组件大小,并且 Column 是继承自 Fix,所以可以直接使用 Column + Expanded 来实现 Column

    8.6K20

    Flutter跨平台移动端开发丨SingleChildScrollView、ListView......

    controller:控制器对象,主要作用是控制滚动位置监听滚动事件 primary:是否使用 widget 树默认 PrimaryScrollController 。.../ BouncingScrollPhysics→iOS下弹性效果 shrinkWrap:表示是否根据子 widget 总长度设置 listview 长度,默认为 false。...如果设置为 0.0,表示关闭预加载 children:列表项集合 semanticChildCount:提供语义信息孩子数量 item 数量固定 listview 示例 listview 构造方法参数...controller:控制器对象,主要作用是控制滚动位置监听滚动事件 primary:是否使用 widget 树默认 PrimaryScrollController 。...ListView GridView 都有对应组合对象如:SliverList SliverGrid。

    8.7K51

    ListView&GirdView

    本篇文章,我们会进一步对Flutter中常用Widget进行介绍,有印象童鞋可能还记得,在前面的文章我们分享了RowColunm用法,我们也使用这两个Widget完成了一些类似列表操作,...那么我们今天就来介绍下Flutter列表组件ListView网格组件GirdView,嗯,果然是Google家亲儿子,连名字都Android里一模一样。...好吧,我们还是来看下这两个Widget用法吧 ListView ---- ListView就是我们常见列表组件,平时应用开发十分常见,无论你做是什么类型应用都会多多少少会用到ListView...itemBuilder返回指定Listitem到ListItemWidget对象,返回指定ListItemWidget对象。...下面来看下GridView GridView ---- GirView用法ListView类似,只不过由于GridView可以一列或者一行显示多个Item,所以构造方法中就多了个参 GridView

    1.7K20

    【Flutter 专题】123 图解简易 GroupList 二级分类列表

    和尚在实践过程,想实现一个可选二级分组列表,pub.dev 插件库已经有很多类似功能插件,和尚还是准备从自己角度尝试实现一个简单二级分组列表; 列表分为两级,默认均折叠 一级列表二级列表均可选中和取消...二级列表数据可以主动添加 分组列表实现有很多方式,和尚准备用最基本两个 ListView 嵌套思路来进行展示,默认是展示第一级列表信息,点击展开操作时,展示对应二级列表; GroupList...二级列表 当点击一级列表 item 时,展现二级列表;而实际上只是一级 item 添加一个新列表数据,仅视觉效果上是展开二级列表;当再次点击一级列表 item 时把新加二级列表替换为空...不设置二级列表数据,点击时动态添加; return InkWell( child: Column(children: [ Divider(height: 0.5...ListView 设置 primary: false & shrinkWrap: true 等即可; _widget = ListView.builder( primary: false,

    1.8K31
    领券