📜  Flutter的表格小部件

📅  最后修改于: 2021-09-02 05:19:33             🧑  作者: Mango

表格小部件用于在表格布局中显示项目。无需使用行和列来创建表格。如果我们有多行具有相同的列宽,那么Table 小部件是正确的方法。如果我们只想有一个列,SliverListColumn将是最合适的。 Tabel小部件中行的高度取决于其中的内容。但是可以通过指定columnWidths属性来更改列的宽度。

Table类的构造函数:

Syntax:
Table({Key key, 
List children, 
Map columnWidths, 
TableColumnWidth defaultColumnWidth, 
TextDirection textDirection, 
TableBorder border, 
TableCellVerticalAlignment defaultVerticalAlignment, 
TextBaseline textBaseline})



表格小部件的属性:

  • children: Tabel小部件的这个属性以表格行列表作为参数( List )。反过来, TabelRow可以将小部件列表作为子项。
  • columnWidhts:此属性确定Tabel小部件中列的宽度。
  • textDirection:它定义了列在Table中的排序方向。它可以是从左到右,也可以是从右到左。
  • defaultColumnWidth:该属性以TabelComumnWidth类作为输入参数,设置Tabel小部件中列的默认宽度。
  • key:此属性决定小部件在小部件树中将如何相互替换。
  • border:该属性以TabelBorder小部件为参数,设置表格的边框。默认情况下, Tabel小部件中没有边框。
  • defaultVerticalAlignment:该属性以TableCellVerticalAlignment 枚举为参数值,设置表格单元格的垂直对齐方式。
  • textBaseline:该属性以 TextBaseline 枚举为参数。使用此属性,我们可以指定一条水平线,用于在Tabel小部件内对齐屏幕上的文本。

例:主要。dart文件

Dart
import 'package:flutter/material.dart';
 
void main() {
  runApp(MyApp());
}
 
class MyApp extends StatelessWidget {
  // This widget is the root
  // of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Table',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
      debugShowCheckedModeBanner: false,
    );
  }
}
 
class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title:Text("GeeksforGeeks"),
        backgroundColor: Colors.green,
      ),
      body: Column(
        children:[
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text("Table",textScaleFactor: 2,style: TextStyle(fontWeight:FontWeight.bold),),
          ),
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Table(
               
            // textDirection: TextDirection.rtl,
            // defaultVerticalAlignment: TableCellVerticalAlignment.bottom,
            // border:TableBorder.all(width: 2.0,color: Colors.red),
            children: [
              TableRow(
                children: [
                  Text("Education",textScaleFactor: 1.5,),
                  Text("Institution name",textScaleFactor: 1.5),
                  Text("University",textScaleFactor: 1.5),
                ]
              ),
               TableRow(
                children: [
                  Text("B.Tech",textScaleFactor: 1.5),
                  Text("ABESEC",textScaleFactor: 1.5),
                  Text("AKTU",textScaleFactor: 1.5),
                ]
              ),
              TableRow(
                children: [
                  Text("12th",textScaleFactor: 1.5),
                  Text("Delhi Public School",textScaleFactor: 1.5),
                  Text("CBSE",textScaleFactor: 1.5),
                ]
              ),
              TableRow(
                children: [
                  Text("High School",textScaleFactor: 1.5),
                  Text("SFS",textScaleFactor: 1.5),
                  Text("ICSE",textScaleFactor: 1.5),
                ]
              ),
            ],
        ),
          ),
        ]
      ),
    );
  }
}


输出:

没有边框的表格小部件

如果我们对上面的示例进行以下更改:

textDirection: TextDirection.ltr,
border:TableBorder.all(width: 1.0,color: Colors.red)






结果如下图所示:

带边框的表格小部件

如果我们对上面的示例进行以下更改:

textDirection: TextDirection.ltr,
defaultVerticalAlignment: TableCellVerticalAlignment.bottom,
border:TableBorder.all(width: 1.0,color: Colors.red),





结果如下图所示:

如果我们对上面的示例进行以下更改:

textDirection: TextDirection.rtl,
border:TableBorder.all(width: 1.0,color: Colors.red),





结果如下图所示:

带有彩色边框的表格小部件

如果我们对上面的示例进行以下更改:

textDirection: TextDirection.ltr,
defaultVerticalAlignment: TableCellVerticalAlignment.middle,
border:TableBorder.all(width: 1.5,color: Colors.red),





结果如下图所示:

具有垂直单元格对齐和彩色边框的表格小部件

完整代码可以参考https://github.com/singhteekam/Flutter-Data-Table-and-Table-Widget