10、 Flutter Widgets 之 DataTable表格数据

本文详细介绍了如何在Flutter中使用DataTable组件,包括设置列和行、属性配置(如排序、选择、单元格编辑)、排序算法实现以及处理大量数据的滚动显示。展示了如何定制表头、添加选择功能和自定义事件处理。

1.DataTable介绍

数据表显示表格数据,需要设置行和列

2.DataTable属性

  • columns:DataColumn 行
  • sortColumnIndex:索引在行的位置
  • sortAscending = true:升序/降序 只有UI变化,排序需要自己实现
  • onSelectAll:全选回调,默认实现全选操作
  • dataRowHeight = kMinInteractiveDimension:数据内容每列高度
  • headingRowHeight = 56.0:头部每列高度
  • horizontalMargin = 24.0:表格左右外边距
  • columnSpacing = 56.0:行每个子节点宽度
  • showCheckboxColumn = true:是否显示Checkbox
  • dividerThickness = 1.0:间隔线高度
  • rows:DataRow 列

3.DataColumn属性

  • label:子widget
  • tooltip:长按提示
  • numeric = false:是否右对齐
  • onSort:升序/降序

4.DataRow属性

  • selected = false:是否选中
  • onSelectChanged:选中回调
  • color:背景色
  • cells:子widgets

5.DataCell属性

  • child:子widget
  • placeholder = false:是都占位
  • showEditIcon = false:是否展示编辑
  • onTap:点击事件

6.DataTable基本用法

  • 一个基础的DataTable需要设置columns列,rows行
  • 由于DataTable本身是不具备滑动属性,所以当数据比较多的时候需要嵌套滑动组件,使用两个SingleChildScrollView来完成纵向横向的滑动

  • /**
     * @Author wywinstonwy
     * @Date 2021/12/28 9:45 下午
     * @Description:
     */
    import 'package:demo202112/utils/common_appbar.dart';
    import 'package:flutter/material.dart';
    
     class WyDataTable extends StatefulWidget {
       const WyDataTable({Key? key}) : super(key: key);
    
       @override
       _WyDataTableState createState() => _WyDataTableState();
     }
    
     class _WyDataTableState extends State<WyDataTable> {
       @override
       Widget build(BuildContext context) {
         return Scaffold(
           appBar: getAppBar('DataTable'),
           body: _baseDataTable(),
         );
       }
       _baseDataTable(){
         return DataTable(
           columns: [
             DataColumn(label: Text('姓名')),
             DataColumn(label: Text('年龄')),
           ],
           rows: [
             DataRow(cells: [
               DataCell(Text('老王')),
               DataCell(Text('26')),
             ]),
             DataRow(cells: [
               DataCell(Text('老李')),
               DataCell(Text('16')),
             ]),
             DataRow(cells: [
               DataCell(Text('老李')),
               DataCell(Text('16')),
             ]),
           ],
         );
       }
     }
    

    效果:

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风雨「83」

你的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值