You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:46:14