Flutter_22_DataTable

  • DataTable是Flutter中的表格
    • columns(声明)表头列表
      • DataColumn(表头单元格)
    • rows(声明数据列表)
      • DataRow(一行数据)
        • DataCell(数据单元格)
    • 其他属性
import 'package:flutter/material.dart';

void main() {
  //下一个组件
  runApp(MyApp());
}

//MaterialApp
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Flutter",
      //下一个组件
      home: Home(),
      debugShowCheckedModeBanner: false,
    );
  }
}

//Scaffold
class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("首页"),
        leading: Icon(Icons.menu),
        actions: [Icon(Icons.settings)],
        elevation: 0.0,
        centerTitle: true,
      ),
      //下一个组件
      body: UserList(),
    );
  }
}

class User {
  String name;
  int age;
  bool selected;

  User(this.name, this.age, {this.selected = false});
}

class UserList extends StatefulWidget {
  @override
  _UserListState createState() => _UserListState();
}

class _UserListState extends State<UserList> {
  List<User> data = [
    User('张三', 18),
    User('张三1', 18),
    User('张三2', 182, selected: true),
    User('张三3', 182),
    User('张三4', 118),
  ];
  var _sortAscending = true;

    dynamic _getUserRows() {
    List <DataRow>dataRows=[];
    for (int i = 0; i < data.length; i++) {
      dataRows.add(
        DataRow(
          selected: data[i].selected,
          onSelectChanged: (selected) {setState(() {data[i].selected = selected!;});},
          cells: [
            DataCell(Text("${data[i].name}"),),
            DataCell(Text("${data[i].age}"),),
            DataCell(Text("男"),),
            DataCell(Text("---"),),
          ],
        ),
      );
    }
    return dataRows;
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        child: DataTable(
          sortColumnIndex: 1,
          sortAscending: _sortAscending,
          dataRowHeight: 100,
          horizontalMargin: 20,
          columnSpacing: 100,
          columns: [
            DataColumn(
                label: Text(
                  "姓名",
                ),
                numeric: true,
                onSort: (int columnIndex, bool asscending) {
                  setState(() {
                    _sortAscending = asscending;
                    if (asscending) {
                      data.sort((a, b) => a.age.compareTo(b.age));
                    } else {
                      data.sort((a, b) => b.age.compareTo(a.age));
                    }
                  });
                }),
            DataColumn(label: Text("年龄")),
            DataColumn(label: Text("性别")),
            DataColumn(label: Text("简介")),
          ],
          rows:_getUserRows(),
            // DataRow(
            //   cells: [
            //     DataCell(Text("张三")),
            //     DataCell(Text("18")),
            //     DataCell(Text("male")),
            //     DataCell(Text("一个男人")),
            //   ],
            // ),
        ),
      ),
    );
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值