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

如何让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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:57:00