如何让Flutter的Table组件垂直拉伸占满所有可用空间
解决方案
要让Table占满垂直方向全部可用空间,按以下步骤修改代码即可:
- 用
SizedBox.expand包裹Table组件,强制Table获取父级(Scaffold body)的最大可用宽高约束 - 给Table添加
defaultVerticalAlignment: TableCellVerticalAlignment.fill配置,让单元格内的元素撑满行的垂直高度
修改后的代码示例:
home: Scaffold( appBar: AppBar(), body: SizedBox.expand( child: Table( defaultVerticalAlignment: TableCellVerticalAlignment.fill, children: [ TableRow( children: [ TextButton(onPressed: () {}, child: Text('1')), TextButton(onPressed: () {}, child: Text('2')), ] ) ], ), ) )
如果需要多个TableRow均分垂直高度,可以用LayoutBuilder获取父容器的总高度后,按行数分配每个行的高度即可:
home: Scaffold( appBar: AppBar(), body: LayoutBuilder( builder: (context, constraints) { // 假设有3行,每行高度为总高度的1/3,可自行调整行数 final rowHeight = constraints.maxHeight / 3; return Table( children: [ TableRow( children: [ SizedBox(height: rowHeight, child: TextButton(onPressed: () {}, child: Text('1'))), SizedBox(height: rowHeight, child: TextButton(onPressed: () {}, child: Text('2'))), ] ), // 剩余TableRow按相同规则配置即可 ], ); }, ) )
内容的提问来源于stack exchange,提问作者user4617883
相关产品推荐
相关产品推荐

