Flutter 屏幕中部实现TabView时触发ParentDataWidget使用错误
问题原因
Incorrect use of ParentDataWidget错误的触发条件非常明确:Expanded组件只能作为Row、Column、Flex这三类Flex布局组件的直接子节点使用。你贴出的卡片代码本身没有使用Expanded,因此问题必然出在你调用该卡片的外层代码中:
你大概率是给该卡片组件套了Expanded包装,但Expanded的父组件是Stack、Container、Padding、TabBarView这类不支持Flex布局参数的组件,导致Expanded传递的FlexParentData无法被父组件识别,抛出断言错误。
解决方法
- 先排查外层调用逻辑:找到所有包裹当前卡片组件的
Expanded,确认它的父组件是否为Row/Column/Flex,只要父组件不属于这三类,直接删掉外层的Expanded即可解决报错。 - 如果你是在
TabBarView中使用该卡片:TabBarView属于滚动类容器,不需要给它的子页面根节点套Expanded,仅在子页面内部的Flex布局中按需使用Expanded分配空间即可。 - 额外优化当前卡片的布局隐患:你当前卡片的父容器固定宽度为190,但内部图片宽度取了屏幕宽度的0.9,大概率会出现内容溢出,建议把图片的
width属性改为double.infinity适配父容器宽度;同时Stack的子节点建议用Positioned代替Padding做定位,适配不同屏幕尺寸时布局更稳定。
内容的提问来源于stack exchange,提问作者Alan Bosco
相关产品推荐
相关产品推荐

