Flutter BMI计算器点击卡片触发'Incorrect use of ParentDataWidget'错误?
解决Flutter BMI计算器中点击卡片触发的布局错误
你的问题核心是错误嵌套了Expanded组件,和ReusableCard无关,也不是性别选择逻辑的问题。
错误原因
在InputPage的body布局中,中间的Expanded直接嵌套了另一个Expanded:
Expanded( child: Expanded( // 这里的嵌套是错误的 child: ReusableCard( colour: activeCardColor, ), ), ),
Expanded是ParentDataWidget,只能作为Row/Column/Flex的直接子元素使用。嵌套Expanded会导致布局约束冲突,触发Incorrect use of ParentDataWidget和Each child must be laid out exactly once错误。第一次点击时布局重建未完全暴露问题,再次点击时布局系统重新计算约束,错误就会被抛出。
修复方案
移除中间嵌套的Expanded,直接将ReusableCard作为外层Expanded的子组件:
修改后的InputPage关键代码片段:
body: Column( children: [ Expanded( child: Row( children: [ // 男性卡片代码(无需修改) // 女性卡片代码(无需修改) ], ), ), // 修复:移除内层Expanded Expanded( child: ReusableCard( colour: activeCardColor, ), ), Expanded( child: Row( children: [ // 下方两个卡片代码(无需修改) ], ), ), ], ),
验证
修改后,点击性别卡片切换颜色的逻辑会正常工作,不会再抛出布局错误。你的性别选择逻辑和ReusableCard组件实现都是正确的,无需额外调整。
内容的提问来源于stack exchange,提问作者maherbmf
相关产品推荐
相关产品推荐

