用于展示表格的组件,可指定边线、列宽、文字方向等属性,核心对象类型是TableRow。

相关组件

DataTable

Table基本使用

  1. <br />【children】 : 组件列表 【List<Widget><br />【columnWidths】 : 列宽 【Map<int, TableColumnWidth><br />【defaultColumnWidth】 : 默认列宽 【TableColumnWidth】<br />【border】 : 边线 【TableBorder】<br />【textDirection】 : 文字方向 【TextDirection】<br />【defaultVerticalAlignment】 : 单元格竖直方向对齐模式 【TableCellVerticalAlignment】<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/326147/1589512420593-d3752bcb-22dd-4e73-a42c-c0c756ef8c8f.png#align=left&display=inline&height=302&margin=%5Bobject%20Object%5D&name=image.png&originHeight=302&originWidth=405&size=29308&status=done&style=none&width=405)
import 'package:flutter/material.dart';
class CustomTable extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var title = _ItemBean("单位称", "量纲", "单位", "单位名称", "单位符号");
    var m = _ItemBean("长度", "L", "1m", "米", "m");
    var kg = _ItemBean("质量", "M", "1Kg", "千克", "Kg");
    var s = _ItemBean("时间", "T", "1s", "秒", "s");
    var a = _ItemBean("安培", "Ι", "1A", "安培", "A");
    var k = _ItemBean("热力学温度", "θ", "1K", "开尔文", "K");
    var mol = _ItemBean("物质的量", "N", "1mol", "摩尔", "mol");
    var cd = _ItemBean("发光强度", "J", "1cd", "坎德拉", "cd");

    var data = <_ItemBean>[title, m, kg, s, a, k, mol, cd];

    return SingleChildScrollView(
      scrollDirection: Axis.horizontal,
      child: Table(
        columnWidths: const <int, TableColumnWidth>{
          0: FixedColumnWidth(80.0),
          1: FixedColumnWidth(80.0),
          2: FixedColumnWidth(80.0),
          3: FixedColumnWidth(80.0),
          4: FixedColumnWidth(80.0),
        },
        defaultVerticalAlignment: TableCellVerticalAlignment.middle,
        border: TableBorder.all(
            color: Colors.orangeAccent, width: 1.0, style: BorderStyle.solid),
        children: data
            .map((item) => TableRow(children: <Widget>[
                  Center(
                      child: Text(
                    item.name,
                    style: TextStyle(color: Colors.blue),
                  )),
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Center(child: Text(item.symbol)),
                  ),
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Center(child: Text(item.unitSymbol)),
                  ),
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Center(child: Text(item.unitName)),
                  ),
                  Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Center(child: Text(item.unit)),
                  ),
                ]))
            .toList(),
      ),
    );
  }
}

class _ItemBean {
  String name;
  String symbol;
  String unit;
  String unitName;
  String unitSymbol;

  _ItemBean(this.name, this.symbol, this.unit, this.unitName, this.unitSymbol);
}