如何让Row组件中的ElevatedButton与Container自动等高对齐?
不用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
相关产品推荐
相关产品推荐

