hyzp_ybqx-Commit001:代码刚转换好,编译通过

This commit is contained in:
WinUser01
2021-12-09 20:24:36 +08:00
commit 8c74b14e5c
800 changed files with 66912 additions and 0 deletions
+134
View File
@@ -0,0 +1,134 @@
import 'package:flutter/material.dart';
import 'package:linked_scroll_controller/linked_scroll_controller.dart';
import 'table_cell.dart';
class TableBody extends StatefulWidget {
// 所有点位 31 天的车流量日统计数据,每天有 3 个数据:车流量、早高峰、晚高峰
Map mapTableData; // 有 31 个元素,每个元素又是一个 Map:包含车流量、早高峰、晚高峰
final ScrollController scrollController;
TableBody({
@required this.scrollController,
@required this.mapTableData,
});
@override
_TableBodyState createState() => _TableBodyState();
}
class _TableBodyState extends State<TableBody> {
LinkedScrollControllerGroup _controllers;
ScrollController _firstColumnController;
ScrollController _restColumnsController;
@override
void initState() {
super.initState();
_controllers = LinkedScrollControllerGroup();
_firstColumnController = _controllers.addAndGet();
_restColumnsController = _controllers.addAndGet();
}
@override
void dispose() {
_firstColumnController.dispose();
_restColumnsController.dispose();
super.dispose();
}
List listWidth = [
100.0,
80.0,
80.0,
80.0,
];
@override
Widget build(BuildContext context) {
return ListView(
controller: _restColumnsController,
physics: const ClampingScrollPhysics(),
children: List.generate(widget.mapTableData.length, (index1) {
// 降序生成
int rIndex1 = widget.mapTableData.length - 1 - index1;
String key1 = widget.mapTableData.keys.elementAt(rIndex1);
return Row(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(4, (index2) {
String key2 = '';
if (index2 > 0) {
key2 = widget.mapTableData[key1].keys.elementAt(index2 - 1);
}
return MultiplicationTableCell(
width: listWidth[index2],
height: cellHeight,
fontsize: 0 == index2 ? 14 : 16,
edgeRight: ' ',
text: 0 == index2
? '${rIndex1 + 1}.${key1}'
: widget.mapTableData[key1][key2].toString(),
//text: _text,
);
}),
);
}),
// children: List.generate(31, (y) {
// return Row(
// mainAxisAlignment: MainAxisAlignment.center,
// children: List.generate(4, (x) {
// return MultiplicationTableCell(
// value: (x + 2) * (y + 2),
// width: listWidth[x],
// height: cellHeight,
// text: 0 == x ? '${y + 1}.${(x + 2) * (y + 2)}' : '',
// );
// }),
// );
// }),
);
//Row(
//children:
//[
// SizedBox(
// width: cellWidth,
// child: ListView(
// controller: _firstColumnController,
// physics: ClampingScrollPhysics(),
// children: List.generate(maxNumber - 1, (index) {
// return MultiplicationTableCell(
// //color: Colors.yellow.withOpacity(0.3),
// value: index + 2,
// );
// }),
// ),
// ),
// Expanded(
// child: SingleChildScrollView(
// controller: widget.scrollController,
// scrollDirection: Axis.horizontal,
// physics: const ClampingScrollPhysics(),
// child: SizedBox(
// width: (maxNumber - 1) * cellWidth,
// child: ListView(
// controller: _restColumnsController,
// physics: const ClampingScrollPhysics(),
// children: List.generate(maxNumber - 1, (y) {
// return Row(
// children: List.generate(maxNumber - 1, (x) {
// return MultiplicationTableCell(
// value: (x + 2) * (y + 2),
// );
// }),
// );
// }),
// ),
// ),
// ),
// ),
//],
//);
}
}
@@ -0,0 +1,42 @@
import 'package:flutter/material.dart';
const double cellWidth = 50;
const double cellHeight = 25;
const double headHeight = 30;
class MultiplicationTableCell extends StatelessWidget {
final String text;
final Color color;
double width;
double height;
double fontsize;
AlignmentGeometry alignment;
String edgeRight;
MultiplicationTableCell({
this.text = '',
this.color,
this.width = cellWidth,
this.height = cellWidth,
this.fontsize = 16,
this.alignment = Alignment.centerRight,
this.edgeRight = ' ',
});
@override
Widget build(BuildContext context) {
return Container(
width: width,
height: height,
decoration: BoxDecoration(
color: color,
border: Border.all(
color: Colors.black12,
width: 1.0,
),
),
alignment: alignment,
child: Text(text + edgeRight, style: TextStyle(fontSize: fontsize)),
);
}
}
@@ -0,0 +1,74 @@
import 'package:flutter/material.dart';
import 'table_cell.dart';
class TableHead extends StatelessWidget {
final ScrollController scrollController;
TableHead({
@required this.scrollController,
});
Widget getHeadText(String text, {double height = 30}) {
return Container(
alignment: Alignment.center,
height: height,
child: Text(text, style: TextStyle(fontWeight: FontWeight.bold)),
);
}
List listHead = [
'统计时间',
'车流量',
'早高峰',
'晚高峰',
];
List listWidth = [
100.0,
80.0,
80.0,
80.0,
];
@override
Widget build(BuildContext context) {
return Container(
alignment: Alignment(0, 0),
height: headHeight,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(listHead.length, (index) {
return MultiplicationTableCell(
color: Colors.yellow.withOpacity(0.3),
text: listHead[index],
width: listWidth[index],
);
}),
// children: [
// // getHeadText('统计时间'),
// // getHeadText('车流量'),
// // getHeadText('早高峰'),
// // getHeadText('晚高峰'),
// // MultiplicationTableCell(
// // color: Colors.yellow.withOpacity(0.3),
// // value: 1,
// // ),
// // Expanded(
// // child: ListView(
// // //controller: scrollController, //注释掉该行,便只能上下滚动
// // physics: ClampingScrollPhysics(),
// // scrollDirection: Axis.horizontal,
// // children: List.generate(maxNumber - 1, (index) {
// // return MultiplicationTableCell(
// // color: Colors.yellow.withOpacity(0.3),
// // value: index + 2,
// // );
// // }),
// // ),
// // ),
// ],
),
);
}
}
@@ -0,0 +1,58 @@
import 'package:flutter/material.dart';
import 'package:linked_scroll_controller/linked_scroll_controller.dart';
import 'table_head.dart';
import 'table_body.dart';
class TableScrollable extends StatefulWidget {
// 所有点位 31 天的车流量日统计数据,每天有 3 个数据:车流量、早高峰、晚高峰
Map mapTableData; // 有 31 个元素,每个元素又是一个 Map:包含车流量、早高峰、晚高峰
TableScrollable({
@required this.mapTableData,
});
@override
_TableScrollableState createState() => _TableScrollableState();
}
class _TableScrollableState extends State<TableScrollable> {
LinkedScrollControllerGroup _controllers;
ScrollController _headController;
ScrollController _bodyController;
@override
void initState() {
super.initState();
_controllers = LinkedScrollControllerGroup();
_headController = _controllers.addAndGet();
_bodyController = _controllers.addAndGet();
}
@override
void dispose() {
_headController.dispose();
_bodyController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
TableHead(
scrollController: _headController,
),
Expanded(
child: TableBody(
scrollController: _bodyController,
mapTableData: widget.mapTableData,
),
),
],
),
);
}
}