flutter-datatable

常用代码

import 'package:flutter/material.dart';
import 'package:data_table_2/data_table_2.dart';

import 'models/model_custom_screen.dart';

class PageCostum extends StatefulWidget {
const PageCostum({Key? key}) : super(key: key);

@override
State<PageCostum> createState() => _PageCostumState();
}


class _PageCostumState extends State<PageCostum> {
List<ModelCustomScreenStatistics> listCustomScreenStats = <ModelCustomScreenStatistics>[];

List<DataColumn> _createColumns() {
return [
const DataColumn2(
label: Text('日期'),
size: ColumnSize.L,
),
const DataColumn(
label: Text('数量'),
),
const DataColumn(
label: Text('至今'),
numeric: true,
),
const DataColumn(
label: Text('5日'),
),
const DataColumn(
label: Text('10日'),
),
const DataColumn(
label: Text('20日'),
numeric: true,
),
];
}
List<DataRow> _createRows() {
return listCustomScreenStats.map((element) => DataRow(cells: [
DataCell(Text(element.date)),
DataCell(Text(element.count.toString())),
DataCell(Text(element.chg5.toString())),
DataCell(Text(element.chg10.toString())),
DataCell(Text(element.chg20.toString())),
DataCell(Text(element.chgPresent.toString())),
])
).toList();
}

List<DataColumn> _createColumns_contents() {
return [
const DataColumn2(
label: Text('日期'),
size: ColumnSize.L,
),
const DataColumn(
label: Text('数量'),
),
const DataColumn(
label: Text('5日'),
),
const DataColumn(
label: Text('10日'),
),
const DataColumn(
label: Text('20日'),
numeric: true,
),

];
}
List<DataRow> _createRows_contents() {
return List<DataRow>.generate(
100,
(index) => DataRow(cells: [
DataCell(Text('A' * (10 - index % 10))),
DataCell(Text('B' * (10 - (index + 5) % 10))),
DataCell(Text('C' * (15 - (index + 5) % 10))),
DataCell(Text('D' * (15 - (index + 10) % 10))),
DataCell(Text(((index + 0.1) * 25.4).toString()))
]));
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(16),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
SizedBox(
height: 35,
child: Row(
children: [
ElevatedButton(
onPressed: () {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text("Button1 clicked"),));
},
child: const Text('Button1')
),
],
),
),
Expanded(
child: Column(
children: [
Expanded(
child: Row(
children: [
Expanded(
flex: 3,
child: DataTable2(
columnSpacing: 12,
horizontalMargin: 12,
minWidth: 300,
columns: _createColumns(),
rows: _createRows(),
),
),
const VerticalDivider(
thickness: 3,
indent:10,
endIndent: 10,
),
Expanded(
flex: 7,
child: DataTable2(
columnSpacing: 12,
horizontalMargin: 12,
minWidth: 600,
columns: _createColumns_contents(),
rows: _createRows_contents()
),
),
],
),
),
],
),
),
],
),
),
);
}
}