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

为什么GridView.builder返回高度扩展的元素,而ListView.Seperated返回正常高度的元素?

GridView.builder和ListView.separated是Flutter中两种常用的列表构建方式。

GridView.builder是用于构建网格列表的组件,它可以按照一定的规则将子组件排列成网格形式。它的使用方式是通过指定itemCount属性来确定子组件的数量,然后通过itemBuilder属性来指定每个子组件的构建方式。

ListView.separated是用于构建分隔列表的组件,它可以在列表项之间插入分隔符。它的使用方式是通过指定itemCount属性来确定列表项的数量,然后通过itemBuilder属性来指定每个列表项的构建方式,同时还需要指定separatorBuilder属性来指定分隔符的构建方式。

在给出答案之前,需要明确两个概念:高度扩展的元素和正常高度的元素。

高度扩展的元素指的是,如果列表项的内容超过了列表项的默认高度,则列表项会自动扩展以适应内容的高度。

正常高度的元素指的是,列表项的高度由列表项本身的定义确定,不会根据内容的高度进行扩展。

根据问题描述,GridView.builder返回高度扩展的元素,而ListView.separated返回正常高度的元素,这是因为它们在默认情况下对子组件高度的处理方式不同。

GridView.builder默认情况下会将子组件的高度设置为固定值,如果子组件的内容超出了这个固定值,则会导致子组件高度扩展。这是为了确保网格的整齐排列。如果希望子组件的高度不扩展,可以通过设置GridView的属性shrinkWrap为true,这样GridView会根据子组件的高度自动调整自身的高度。

ListView.separated默认情况下会根据列表项的内容自动调整列表项的高度,以确保内容完整展示。这是为了提供更好的用户体验。如果希望列表项的高度固定,可以通过设置ListView的属性shrinkWrap为true,并且指定列表项的固定高度。

综上所述,GridView.builder和ListView.separated在默认情况下对子组件高度的处理方式不同,所以会导致GridView.builder返回高度扩展的元素,而ListView.separated返回正常高度的元素。

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

  • 腾讯云云服务器:https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务:https://cloud.tencent.com/product/tke
  • 腾讯云数据库:https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储:https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务:https://cloud.tencent.com/product/bcs
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【Android笔记】Jetpack Compose

    当仅仅强调它是一个可组合项时,我会正常使用“可组合项”这个术语。 Layout系统 基本原则 元素需要通过一些约束来测量自己,这限制了一个元素最大和最小宽高。...通过扩展函数来扩展Modifier中方法,因为modifier是链式调用,我们扩展方法也应该符合链式调用规则,Modifier.then方法用来辅助完成链式调用,它接受一个Modifier,返回一个与这个...现在这个子控件已经根据给定限制被测量好,下一步,我们就需要计算它离顶部高度,这里应该使用用户传入高度减去FirstBaseline位置,得到就是这个控件应该离顶部高度。...= AlignmentLine.Unspecified) val firstBaseLine = placeable[FirstBaseline] // 计算元素该被放置到Y坐标,并增加元素高度...使用MeasureScope.layout方法向外部报告大小,并摆放自己,这个方法会返回一个MeasureResult,正好是外部整个lambda表达式所要求返回值。

    79320

    阿里前端高频面试题

    为什么需要清除浮动?清除浮动方式浮动定义: 非IE浏览器下,容器不设高度且子元素浮动时,容器高度不能被内容撑开。 此时,内容会溢出到容器外面影响布局。这种现象被称为浮动(溢出)。...当包含框高度小于浮动框时候,此时就会出现“高度塌陷”。浮动元素引起问题?...在redux中reducer函数规定必须是一个纯函数,reducer中state对象要求不能直接修改,可以通过扩展运算符把修改路径对象都复制一遍,然后产生一个新对象返回。...: 0; border-radius: 100px; border-top-color: red;}说一下data为什么是一个函数不是一个对象?...数据以函数返回形式定义,这样当我们每次复用组件时候,就会返回一个新data,也就是说每个组件都有自己私有数据空间,它们各自维护自己数据,不会干扰其他组件正常运行。

    57320

    clientHeight、scrollHeight、offsetHeight和scrollTop之间区别

    一、先来这个我平时用比较多,height 它主要是返回元素高度或者说这个div内容高度,它是jquery对像,如果只是想取到某个内容高度,那完全可以使用这个,按照上面所设置参数,得到就是...,结果显示上图h2; 对了,为什么这个offsetheight用法和height用法不一样,因为offsetHeight是js对象所能支持方法,$(“”)所获得是一个jquery对象,他是不支持...三、我么怎么用clientHeight和scrollHeight clientHeight在页面上返回内容可视高度(不包括边框,边距或滚动条),结果显示上图h3; scrollHeight返回整个元素高度...为匹配元素集合中获取第一个元素的当前计算高度值,包括padding,但是不包括border,结果显示上图h5。...outerheight顾名思义,outer了都,外面的都要了,获取元素集合中第一个元素的当前计算高度值,包括padding,border和选择性margin。

    1.3K20

    vue.js数据渲染完成后,获取页面高度问题

    遇到问题 通过接口请求出来数据,渲染到页面上,再获取元素内容高度时候,高度为0 为什么高度会是0 因为我是在接口返回数据后,就直接在回调函数里获取了元素内容高度。...虽然数据获取到了,但是页面还没有及时渲染出来,所以获取内容高度就为0了 然后我就延迟2秒获取内容高度,发现内容高度是渲染完成后正常高度,但是这样肯定是不行。...keywords=') .then(function (res) { that.dataList = res.data.data; //将获取到数据赋值给...$refs.content; //通过ref 找到该元素 console.log(content.offsetHeight); // 0...$refs.content; //通过ref 找到该元素 console.log(content.offsetHeight); // 0 //使用$nextTick方法

    6K30

    前端面试中小型公司都考些什么

    为什么要使用它们?结构清晰,便于扩展。 可以方便地屏蔽浏览器私有语法差异。封装对浏览器语法差异重复处理, 减少无意义机械劳动。可以轻松实现多重继承。...同时,成功和失败返回值是不同,成功时候返回是一个结果数组,失败时候则返回最先被reject失败状态值。...static 默认值,没有定位,元素出现在正常文档流中,会忽略 top, bottom, left, right 或者 z-index 声明,块级元素从上往下纵向排布,⾏级元素从左向右排列。...(2)百分比(%),当浏览器宽度或者高度发生变化时,通过百分比单位可以使得浏览器中组件宽和高随着浏览器变化变化,从而实现响应式效果。一般认为子元素百分比相对于直接父元素。...解决高度塌陷问题:在对子元素设置浮动后,父元素会发生高度塌陷,也就是父元素高度变为0。解决这个问题,只需要把父元素变成一个BFC。常用办法是给父元素设置overflow:hidden。

    43840

    web前端开发初学者十问集锦(3)

    1.divheight:100%没有效果,如何让元素高度自动扩充为父元素高度? 我们经常使用元素width:100%和height:100%将元素宽度和高度扩充至父元素宽度和高度。...但是前提是需要对其父元素显示设置宽度和高度,否则无效。 注意,对父元素显示设置宽度和高度也可以使用n%这种百分比形式,前提还是如上描述那样,父元素元素高度和宽度要明确设置。...offsetWidth 与 style.width 区别 一、offsetTop 返回是数字, style.top 返回是字符串,除了数字外还带有单位:px。...二、offsetTop 只读, style.top 可读写。 三、如果没有给 HTML 元素指定过 top 样式,则 style.top 返回是空字符串。...就是没有定位,元素出现在正常文档流中(忽略 top, bottom, left, right 或者 z-index 声明),会撑开父容器。 相对定位: position:relative。

    1.6K20

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

    构造器作为必选字段,用于在 DraggableScrollableSheet 中显示可滑动子内容;其中返回内容需为可滑动 ScrollableWidget,例如 ListView / GridView...12.0)), Padding( padding: EdgeInsets.symmetric(horizontal: 12.0), child: GridView.builder...2. initialChildSize initialChildSize 用于显示初始子 Widgets 所占父 Widget 比例;同时,若返回子 Widget 未提供 ScrollController...4. expand expand 用于是否填充满父 Widget,若 DraggableScrollableSheet 外层固定高度则不影响;若外层未对高度进行固定,expand 作用于是否填充满父...小扩展 之前在分析 DraggableScrollableSheet 时其源码采用了 FractionallySizedBox 比例容器,和尚简单了解一下,其源码非常简单,通过设置 heightFactor

    1.3K20

    height、offsetheight、clientheight、scrollheight、innerheight、outerheight

    jquery给取出值并放在各自框中 一、先来这个我平时用比较多,height 它主要是返回元素高度或者说这个div内容高度,它是jquery对像,如果只是想取到某个内容高度,那完全可以使用这个...,$("")所获得是一个jquery对象,他是不支持offsetHeight。...三、我么怎么用clientHeight和scrollHeight clientHeight在页面上返回内容可视高度(不包括边框,边距或滚动条),结果显示上图h3; scrollHeight返回整个元素高度...为匹配元素集合中获取第一个元素的当前计算高度值,包括padding,但是不包括border,结果显示上图h5。...outerheight顾名思义,outer了都,外面的都要了,获取元素集合中第一个元素的当前计算高度值,包括padding,border和选择性margin。

    1.4K20

    面试官问:如何判断一个元素是否在可视区域?

    通过元素位置信息和滚动条滚动高度 在这里,我们先介绍几个元素位置信息和大小: Element.clientWidth Element.clientWidth 属性表示元素内部高度,以像素计。...HTMLElement.offsetTop HTMLElement.offsetTop返回当前元素相对于其 offsetParent 元素顶部内边距距离。...当元素 style.display 设置为 "none" 时,offsetParent 返回 null。...() 方法返回值,如果没有根元素(即直接相对于视口滚动),则返回 null boundingClientRect:目标元素矩形区域信息 intersectionRect:目标元素与视口(或根元素)...后者定义根元素 margin,用来扩展或缩小 rootBounds 这个矩形大小,从而影响 intersectionRect 交叉区域大小。

    3K21

    Web前端最全面试宝典- CSS篇

    在宽度和高度之外绘制元素内边距和边框(元素默认效果)。 border-box:元素指定任何内边距和边框都将在已设定宽度和高度内进行绘制。...为什么要使用它们? 1)结构清晰,便于扩展。 2)可以方便地屏蔽浏览器私有语法差异。这个不用多说,封装对浏览器语法差异重复处理,减少无意义机械劳动。 3)可以轻松实现多重继承。...且IE6和7是不支持这个属性,需要通过display:inline;zoom:1做hack处理。 static 默认值。没有定位,元素出现在正常流中。...,相关样式表或样式规则会按照正常级联规被应用。...当媒体查询返回假, 标签上带有媒体查询样式表 仍将被下载 (只不过不会被应用)。 包含了一个媒体类型和至少一个使用 宽度、高度和颜色等媒体属性来限制样式表范围表达式。

    1.1K10

    腾讯前端必会面试题

    执行环境只会改变this、传递参数、全局变量等为什么需要清除浮动?清除浮动方式浮动定义: 非IE浏览器下,容器不设高度且子元素浮动时,容器高度不能被内容撑开。...浮动工作原理:浮动元素脱离文档流,不占据空间(引起“高度塌陷”现象)浮动元素碰到包含它边框或者其他浮动元素边框停留浮动元素可以左右移动,直到遇到另一个浮动元素或者遇到它外边缘包含框。...当包含框高度小于浮动框时候,此时就会出现“高度塌陷”。浮动元素引起问题?...父元素高度无法被撑开,影响与父元素同级元素与浮动元素同级非浮动元素会跟随其后若浮动元素不是第一个元素,则该元素之前元素也要浮动,否则会影响页面的显示结构清除浮动方式如下:给父级div定义height...如果是引用类型,就返回这个引用类型对象哪些情况会导致内存泄漏以下四种情况会造成内存泄漏:意外全局变量: 由于使用未声明变量,意外创建了一个全局变量,而使这个变量一直留在内存中无法被回收。

    43240

    flex大法:一网打尽所有常见布局

    100%,然后去掉给content元素设置高度,并给它添加一个带高度元素: 接下来需要使用到flex-grow属性,这个是flex子元素属性,用来控制容器还有空间剩余时,flex子元素怎么进行扩展...,默认值是0,也就是不扩展,子元素会显示为它们默认大小,这个所谓默认大小分几种情况: 1.如果子元素另一个属性flex-basis设置了不为auto具体数值,那么无论元素有没有设置具体大小都显示为该属性定义尺寸...上面我们提到了max-content,同样,这里对应着min-content概念,虽然正常来说应该变成我们计算出尺寸才对,但是减少到元素内容min-content后它就不会再变小了,content...,那你可能会想,那我宽度就少一点好了,比如设为20%,然后允许扩展,即flex-grow:1,那样不就可以把减去子元素宽度及外边距还剩下空间再还给子元素了吗,试试看: 可以看到前面一切正常,但是最后一行因为只有一个元素...,以【单列布局】为基础,给content添加三个子元素,两侧定宽,并且不允许收缩,中间允许扩展即可: 垂直居中 不知道各位最开始用flex是为什么,反正笔者就是冲着垂直居中去,用它实在是太简单了,之前还考虑是不是定高呀

    87210

    面试系列之-HashMap实现原理(JAVA基础)

    但是当位于一个桶中元素较多,即hash值相等元素较多时,通过key值依次查找效率较低;链表是为了解决哈希冲突存在内部解决方案(拉链法); JDK1.8中,HashMap采用位桶+链表+红黑树实现...,查询只需扫描部分,则效率高; HashMap红黑树原理分析 红黑树是一种近似平衡二叉查找树,其主要优点就是“平衡“,即左右子树高度几乎一致,以此来防止树退化为链表,好处就是避免在最极端情况下链表变得很长很长...:将元素 hashCode() 和自己右移 16 位后结果求异或; HashMap为什么允许key/value为null,但最多只有一个 如果key为null会放在第一个bucket(即下标0)位置...方法,这个方法返回一个SynchronizedMap,其在方法上,全部加上synchronized,类似于HashTable; jdk8中对HashMap做了改变 JDK1.7用是头插法,JDK1.8...;时间复杂度:链表O(n/2),红黑树O(log(n)); 冲突超过8才将链表转为红黑树不直接用红黑树 默认使用链表, 链表占用内存更小 正常情况下,想要达到冲突为8几率非常小,如果真的发生了转为红黑树可以保证极端情况下效率

    1.5K22
    领券