用于展示表格的组件,可指定边线、列宽、文字方向等属性,核心对象类型是TableRow。
相关组件
Table基本使用
<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);
}