【flutter 入门】Consider setting mainAxisSize to MainAxisSize.min and using FlexFit.loose fits for the flexible child
Flexible,Expanded
先参考一遍错误解决。
https://blog.csdn.net/m0_37828249/article/details/104121933

讲道理这段阅读理解已经告诉我们问题所在以及如何解决了,不放心可以配合一点源码阅读:在Flutter中可滚动组件的高度是无限(infinte)的,如源码所说:“provides its children with an infinite amount of space.”。这点特性和一些尽可能撑满可用空间的组件如Expanded互斥(Expand在flex布局中用以自动撑满剩下所有空间,其fit属性默认为FlexFit.tight)——因为在可滚动组件中使用Expanded时,Expanded可被分配的空间是无限的,无法渲染,于是抛错。
解决方式也是阅读理解后稍稍发散,不用Expanded这类fit属性为FlexFit.tight的组件就ok了,可以像提示所说的用Flexible代替Expanded(它的fit属性默认为fit属性默认为FlexFit.loose,呈现包裹性,刚好包裹子元素且不会超过最大可用宽(高)度),同时要注意,父Flex类型元素的mainAxisSize一定要设为MainAxisSize.min,否则也会报错,原理也是和上卖弄一样的可用空间无限问题。总结一下,其实垂直可滚动组件中,Column内部不可以也没必要使用任何none-zero的flex元素,所有chidren都用Container即可,如果强迫症也请使用Flexible,而非Expanded。
* Flexible组件可以使Row、Column、Flex等子组件在主轴方向有填充可用空间的能力,但是不强制子组件填充可用空间。
* Expanded组件可以使Row、Column、Flex等子组件在其主轴方向上展开并填充可用空间,是强制子组件填充可用空间。
作者:习惯了_就好
链接:https://www.jianshu.com/p/d07d811a7d68
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Flexible是一个控制Row、Column、Flex等子组件如何布局的组件。
Flexible组件可以使Row、Column、Flex等子组件在主轴方向有填充可用空间的能力(例如,Row在水平方向,Column在垂直方向),但是它与Expanded组件不同,它不强制子组件填充可用空间。
Flexible组件必须是Row、Column、Flex等组件的后裔,并且从Flexible到它封装的Row、Column、Flex的路径必须只包括StatelessWidgets或StatefulWidgets组件(不能是其他类型的组件,像RenderObjectWidgets)。
直观理解
总结,两控年是对Row、Column、Flex 布局的处理。子控件占多少地方。
比例嵌套ListView GridView.
分类:
Flutter
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)