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

如何让Row组件中的ElevatedButton与Container自动等高对齐?

解决Row内ElevatedButton与TextFormField高度对齐问题

不用Container或SizedBox固定高度的话,可以通过以下方式实现:

核心问题在于ElevatedButton默认自带上下内边距,且不会主动拉伸填充父组件高度,所以Expanded只能控制宽度,无法同步高度。

具体实现步骤:

  • 用IntrinsicHeight包裹Row,让Row的高度自动匹配其中最高的子组件(也就是带边框的TextFormField)
  • 给Row设置crossAxisAlignment: CrossAxisAlignment.stretch,强制所有子组件填满Row的高度
  • 调整ElevatedButton的样式,移除默认的上下内边距,让按钮背景完全填充可用空间

修改后的代码:

IntrinsicHeight(
  child: Row(
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: [
      Container(
        width: width / 2,
        child: TextFormField(
          decoration: const InputDecoration(
              labelText: 'Date picker',
              border: OutlineInputBorder()),
        ),
      ),
      Expanded(
        child: ElevatedButton(
          onPressed: () => displayDatePicker(context),
          style: ElevatedButton.styleFrom(
            padding: EdgeInsets.zero,
            tapTargetSize: MaterialTapTargetSize.shrinkWrap,
          ),
          child: const Text("Pick Date"),
        ),
      ),
    ],
  ),
)

补充说明:tapTargetSize: MaterialTapTargetSize.shrinkWrap是为了让按钮的点击区域和视觉区域完全一致,避免出现点击范围超出按钮背景的情况。

内容的提问来源于stack exchange,提问作者Yu Cao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:05:00