Flutter Failed assertion: line 1694 pos 12: 'hasSize'

        做Flutter项目的时候,引用Column套用ListView的时候,会报这样的异常

    先看一下代码中的两个控件之间的套用关系

        出现这个问题的原因是Column控件是纵向布局,而高度无限制。ListView控件呢,是可滑动控件,在滑动方向上也无高度限制。两个都无限制的控件相互嵌套,就会报出以上异常。

        解决方法,在ListView的外层Padding外再添加一层Expanded控件,如下

问题解决。问:那把Expanded控件放在Padding内ListView外会是什么效果。报错如下:

        The ParentDataWidget Expanded(flex: 1) wants to apply ParentData of type FlexParentData to a RenderObject, which has been set up to accept ParentData of incompatible type BoxParentData.这句话就是关键。我去百度翻译了一下

大体意思就是Expanded控件只能用在Flex子组件里面,不能用在RenderObjectWidget子组件内。我们进去源码可以看到,Row、Column都是Flex的子组件,而Padding是SingleChildRenderObjectWidget的子组件。那么问:从百度翻译的内容看出来的?答案:否。我在Flutter中文网的flutter实战电子书中看到的

看到这句话的时候,看不懂的百度翻译的内容是不是就比较容易理解了。

        知道了这一点,那么以后遇到这样的问题,是不是就有解决的方法了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容