Flutter列自动高度由父行
Flutter列自动高度由父行
我尝试使用自动调整高度的列,但仍然不起作用。
示例
- 卡片
- 行
- 扩展(flex:4)
- 网络图片(该图片高度为120)
- 扩展(flex:4)
- 容器
- 列(这是我需要的列)
- 容器
- 扩展(flex:4)
- 行
所以我发现解决方案是我必须使用Expanded小部件,所以我尝试了一下,并得到了异常
- 卡片
- 行
- 扩展(flex:4)
- 网络图片(该图片高度为120)
- 扩展(flex:4)
- 容器
- 扩展
- 列(这是我需要的列)
- 扩展
- 容器
- 扩展(flex:4)
- 行
扩展小部件必须直接放置在Flex小部件内。
I/flutter(14383):扩展(没有深度,flex:1,dirty)有一个Flex祖先,但它们之间还有其他小部件:
I/flutter(14383):- 扩展(flex:4)(这是一个不同于有问题的扩展)
I/flutter(14383):这些小部件不能够放置在扩展和其Flex之间。
谢谢帮助。
问题:Flutter中的Column无法自动适应父行高度的原因以及解决方法
在Flutter中,当将Expanded小部件添加到Container中时,可能会出现这个问题。根据Flutter的文档,Expanded小部件必须是Row、Column或Flex的子孙节点,并且从Expanded小部件到其封闭的Row、Column或Flex的路径必须仅包含StatelessWidgets或StatefulWidgets(而不是其他类型的小部件,如RenderObjectWidgets)。
解决方法是将Container替换为Column。但是,由于使用了Container来设置填充,因此可以尝试将Container放在Expanded内部来解决问题。
此外,Flexible和Expanded之间的区别是,Flexible不要求子部件填充可用空间,而Expanded则要求子部件填充可用空间。想要了解更多关于Flexible的信息,可以参考Flutter的官方文档:https://docs.flutter.io/flutter/widgets/Flexible-class.html。