报告饼图修改
This commit is contained in:
parent
047965aede
commit
b2f50b10a6
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:fl_chart/fl_chart.dart';
|
import 'package:fl_chart/fl_chart.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_echart/flutter_echart.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:functional_widget_annotation/functional_widget_annotation.dart';
|
import 'package:functional_widget_annotation/functional_widget_annotation.dart';
|
||||||
import 'package:marking_app/common/mixin/common.dart';
|
import 'package:marking_app/common/mixin/common.dart';
|
||||||
|
|
@ -235,6 +236,7 @@ class _JobReportState extends State<JobReport> with CommonMixin {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
bool isPadFlag = isPad();
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: Color.fromRGBO(245, 245, 245, 1),
|
backgroundColor: Color.fromRGBO(245, 245, 245, 1),
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
|
|
@ -337,7 +339,7 @@ class _JobReportState extends State<JobReport> with CommonMixin {
|
||||||
height: 6.r,
|
height: 6.r,
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: data.kgReport.details.length > 10 ? 300.r : data.kgReport.details.length * 50.r + 20.r,
|
height: data.kgReport.details.length > 10 ? 300.r : data.kgReport.details.length * 50.r + (isPadFlag == true ?40.r:65.r),
|
||||||
child: ReportTable(
|
child: ReportTable(
|
||||||
headList: ['题', '作答率', '作答人数', '正确率', '标准答案', '优先批阅概况'],
|
headList: ['题', '作答率', '作答人数', '正确率', '标准答案', '优先批阅概况'],
|
||||||
bodyList: data.kgReport.details,
|
bodyList: data.kgReport.details,
|
||||||
|
|
@ -379,7 +381,7 @@ class _JobReportState extends State<JobReport> with CommonMixin {
|
||||||
height: 10.r,
|
height: 10.r,
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: data.zgReport.details.length > 10 ? 300.r : data.zgReport.details.length * 50.r + 20.r,
|
height: data.zgReport.details.length > 10 ? 300.r : data.zgReport.details.length * 50.r + 50.r,
|
||||||
child: ReportTable(
|
child: ReportTable(
|
||||||
headList: ['题', '作答率', '作答人数', '正确率', '查看原题', '优先批阅概况'],
|
headList: ['题', '作答率', '作答人数', '正确率', '查看原题', '优先批阅概况'],
|
||||||
bodyList: data.zgReport.details,
|
bodyList: data.zgReport.details,
|
||||||
|
|
@ -1196,7 +1198,7 @@ Widget $overallPerformance(int totalNumber, List<OverallTitles> overallTitles) {
|
||||||
Color.fromRGBO(104, 136, 253, 1),
|
Color.fromRGBO(104, 136, 253, 1),
|
||||||
Color.fromRGBO(255, 186, 33, 1),
|
Color.fromRGBO(255, 186, 33, 1),
|
||||||
Color.fromRGBO(243, 163, 44, 1),
|
Color.fromRGBO(243, 163, 44, 1),
|
||||||
Color.fromRGBO(211, 211, 211, 1).withOpacity(0.5),
|
Color.fromRGBO(201, 201, 201, 1),
|
||||||
Color.fromRGBO(211, 211, 211, 1),
|
Color.fromRGBO(211, 211, 211, 1),
|
||||||
];
|
];
|
||||||
return Container(
|
return Container(
|
||||||
|
|
@ -1216,7 +1218,36 @@ Widget $overallPerformance(int totalNumber, List<OverallTitles> overallTitles) {
|
||||||
margin: EdgeInsets.only(bottom: 20.h),
|
margin: EdgeInsets.only(bottom: 20.h),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: PieChart(
|
child: PieChatWidget(
|
||||||
|
dataList: overallTitles.asMap().keys.map((index) {
|
||||||
|
var e = overallTitles[index];
|
||||||
|
return EChartPieBean(
|
||||||
|
title: e.title,
|
||||||
|
|
||||||
|
number: e.count,
|
||||||
|
color: colorMap[index]);
|
||||||
|
}).toList(),
|
||||||
|
//是否需要背景
|
||||||
|
isBackground: true,
|
||||||
|
//是否画直线
|
||||||
|
isLineText: true,
|
||||||
|
//背景
|
||||||
|
bgColor: Colors.white,
|
||||||
|
//是否显示最前面的内容
|
||||||
|
isFrontgText: false,
|
||||||
|
//默认选择放大的块
|
||||||
|
initSelect: 1,
|
||||||
|
//初次显示以动画方式展开
|
||||||
|
openType: OpenType.ANI,
|
||||||
|
//旋转类型
|
||||||
|
loopType: LoopType.DOWN_LOOP,
|
||||||
|
//点击回调
|
||||||
|
clickCallBack: (int value) {
|
||||||
|
print("当前点击显示 $value");
|
||||||
|
},
|
||||||
|
),
|
||||||
|
|
||||||
|
/* PieChart(
|
||||||
PieChartData(
|
PieChartData(
|
||||||
borderData: FlBorderData(show: false),
|
borderData: FlBorderData(show: false),
|
||||||
sectionsSpace: 0,
|
sectionsSpace: 0,
|
||||||
|
|
@ -1232,7 +1263,7 @@ Widget $overallPerformance(int totalNumber, List<OverallTitles> overallTitles) {
|
||||||
);
|
);
|
||||||
}).toList(),
|
}).toList(),
|
||||||
),
|
),
|
||||||
),
|
),*/
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
@ -1309,10 +1340,9 @@ Widget $unitTimeAnsweringSituation(BuildContext context, int jobid, List<Questio
|
||||||
|
|
||||||
return false; // 没有找到中文字符
|
return false; // 没有找到中文字符
|
||||||
}
|
}
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: isPad() ? 520.h : 460.h,
|
// height: isPad() ? 520.h : 460.h,
|
||||||
margin: EdgeInsets.only(top: 20.h),
|
margin: EdgeInsets.only(top: 20.h),
|
||||||
padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 12.w),
|
padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 12.w),
|
||||||
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.r)),
|
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.r)),
|
||||||
|
|
@ -1323,137 +1353,135 @@ Widget $unitTimeAnsweringSituation(BuildContext context, int jobid, List<Questio
|
||||||
child: quickText('整体表现', color: Color.fromRGBO(92, 92, 92, 1), size: 14.sp, fontWeight: FontWeight.bold),
|
child: quickText('整体表现', color: Color.fromRGBO(92, 92, 92, 1), size: 14.sp, fontWeight: FontWeight.bold),
|
||||||
margin: EdgeInsets.only(bottom: 20.h),
|
margin: EdgeInsets.only(bottom: 20.h),
|
||||||
),
|
),
|
||||||
Expanded(
|
Scrollbar(
|
||||||
child: Scrollbar(
|
thickness: 8.w,
|
||||||
thickness: 8.w,
|
thumbVisibility: true,
|
||||||
thumbVisibility: true,
|
trackVisibility: true,
|
||||||
trackVisibility: true,
|
radius: Radius.circular(10.r),
|
||||||
radius: Radius.circular(10.r),
|
child: SingleChildScrollView(
|
||||||
child: SingleChildScrollView(
|
scrollDirection: Axis.horizontal,
|
||||||
scrollDirection: Axis.horizontal,
|
child: Column(
|
||||||
child: Column(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
children: [
|
||||||
children: [
|
...mapData.entries.map((entrie) {
|
||||||
...mapData.entries.map((entrie) {
|
bool isViewButton = ['查看原题', '操作'].contains(entrie.key); // 查看按钮
|
||||||
bool isViewButton = ['查看原题', '操作'].contains(entrie.key); // 查看按钮
|
bool isRatio = ['正确率', '错误率', '未做'].contains(entrie.key);
|
||||||
bool isRatio = ['正确率', '错误率', '未做'].contains(entrie.key);
|
bool isQuestionNo = entrie.key == '题号';
|
||||||
bool isQuestionNo = entrie.key == '题号';
|
return Row(
|
||||||
return Row(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
children: [
|
||||||
children: [
|
Container(
|
||||||
Container(
|
width: 94.r,
|
||||||
width: 94.r,
|
alignment: Alignment.center,
|
||||||
|
margin: EdgeInsets.only(bottom: 1.h, right: 1.w),
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 8.w),
|
||||||
|
color: Color.fromRGBO(230, 230, 230, 1),
|
||||||
|
child: quickText(entrie.key, color: Color.fromRGBO(24, 35, 77, 1), size: 12.sp, maxLines: 2),
|
||||||
|
),
|
||||||
|
...entrie.value.map((e) {
|
||||||
|
bool noHasChineseCharacter = isQuestionNo && !containsChinese(e);
|
||||||
|
return Container(
|
||||||
|
width: 96.r,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
margin: EdgeInsets.only(bottom: 1.h, right: 1.w),
|
margin: EdgeInsets.only(bottom: 1.h, right: 1.w),
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 8.w),
|
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 8.w),
|
||||||
color: Color.fromRGBO(230, 230, 230, 1),
|
color: Color.fromRGBO(245, 245, 245, 1),
|
||||||
child: quickText(entrie.key, color: Color.fromRGBO(24, 35, 77, 1), size: 12.sp, maxLines: 2),
|
child: isViewButton
|
||||||
),
|
? InkWell(
|
||||||
...entrie.value.map((e) {
|
onTap: () {
|
||||||
bool noHasChineseCharacter = isQuestionNo && !containsChinese(e);
|
// e
|
||||||
return Container(
|
var _qpm = e as QuestionPictureModel;
|
||||||
width: 96.r,
|
// if (entrie.key == '操作') {
|
||||||
alignment: Alignment.center,
|
// showDialog(
|
||||||
margin: EdgeInsets.only(bottom: 1.h, right: 1.w),
|
// context: context,
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 8.w),
|
// builder: (BuildContext context1) {
|
||||||
color: Color.fromRGBO(245, 245, 245, 1),
|
// return Container(
|
||||||
child: isViewButton
|
// margin: EdgeInsets.symmetric(vertical: 150.h, horizontal: 24.w),
|
||||||
? InkWell(
|
// padding: EdgeInsets.symmetric(vertical: 15.h),
|
||||||
onTap: () {
|
// decoration: BoxDecoration(
|
||||||
// e
|
// color: Colors.white,
|
||||||
var _qpm = e as QuestionPictureModel;
|
// borderRadius: BorderRadius.circular(18.sp),
|
||||||
// if (entrie.key == '操作') {
|
// ),
|
||||||
// showDialog(
|
// child: Column(
|
||||||
// context: context,
|
// children: [
|
||||||
// builder: (BuildContext context1) {
|
// Container(
|
||||||
// return Container(
|
// child: quickText('${_qpm.questionNo}题',
|
||||||
// margin: EdgeInsets.symmetric(vertical: 150.h, horizontal: 24.w),
|
// color: Color.fromRGBO(60, 60, 60, 1), size: 15.sp)),
|
||||||
// padding: EdgeInsets.symmetric(vertical: 15.h),
|
// Expanded(
|
||||||
// decoration: BoxDecoration(
|
// child: ListView(
|
||||||
// color: Colors.white,
|
// padding: EdgeInsets.symmetric(horizontal: 12.w),
|
||||||
// borderRadius: BorderRadius.circular(18.sp),
|
// children: [
|
||||||
// ),
|
// DataTable(
|
||||||
// child: Column(
|
// sortAscending: false,
|
||||||
// children: [
|
// columns: [
|
||||||
// Container(
|
// DataColumn(
|
||||||
// child: quickText('${_qpm.questionNo}题',
|
// label: quickText('姓名',
|
||||||
// color: Color.fromRGBO(60, 60, 60, 1), size: 15.sp)),
|
// color: Color.fromRGBO(114, 114, 114, 1),
|
||||||
// Expanded(
|
// size: 14.sp,
|
||||||
// child: ListView(
|
// fontWeight: FontWeight.bold),
|
||||||
// padding: EdgeInsets.symmetric(horizontal: 12.w),
|
// ),
|
||||||
// children: [
|
// ],
|
||||||
// DataTable(
|
// rows: [],
|
||||||
// sortAscending: false,
|
// ),
|
||||||
// columns: [
|
// ]),
|
||||||
// DataColumn(
|
// )
|
||||||
// label: quickText('姓名',
|
// ],
|
||||||
// color: Color.fromRGBO(114, 114, 114, 1),
|
// ),
|
||||||
// size: 14.sp,
|
// );
|
||||||
// fontWeight: FontWeight.bold),
|
// },
|
||||||
// ),
|
// );
|
||||||
// ],
|
// return;
|
||||||
// rows: [],
|
// }
|
||||||
// ),
|
if (_qpm.questionPicture == null) return ToastUtils.showInfo('当前试题没有原题');
|
||||||
// ]),
|
Navigator.push(
|
||||||
// )
|
context,
|
||||||
// ],
|
MaterialPageRoute(builder: (_) {
|
||||||
// ),
|
return Scaffold(
|
||||||
// );
|
appBar: AppBar(),
|
||||||
// },
|
body: PhotoView(imageProvider: NetworkImage(_qpm.questionPicture!)),
|
||||||
// );
|
);
|
||||||
// return;
|
}),
|
||||||
// }
|
);
|
||||||
if (_qpm.questionPicture == null) return ToastUtils.showInfo('当前试题没有原题');
|
},
|
||||||
Navigator.push(
|
child: Row(
|
||||||
context,
|
mainAxisSize: MainAxisSize.min,
|
||||||
MaterialPageRoute(builder: (_) {
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
return Scaffold(
|
children: [
|
||||||
appBar: AppBar(),
|
quickText('查看', color: Color.fromRGBO(239, 135, 20, 1), size: 12.sp),
|
||||||
body: PhotoView(imageProvider: NetworkImage(_qpm.questionPicture!)),
|
Container(
|
||||||
);
|
padding: EdgeInsets.only(top: 1.h),
|
||||||
}),
|
child: Icon(
|
||||||
);
|
Icons.arrow_forward_ios,
|
||||||
},
|
size: 10.sp,
|
||||||
child: Row(
|
color: Color.fromRGBO(239, 135, 20, 1),
|
||||||
mainAxisSize: MainAxisSize.min,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
quickText('查看', color: Color.fromRGBO(239, 135, 20, 1), size: 12.sp),
|
|
||||||
Container(
|
|
||||||
padding: EdgeInsets.only(top: 1.h),
|
|
||||||
child: Icon(
|
|
||||||
Icons.arrow_forward_ios,
|
|
||||||
size: 10.sp,
|
|
||||||
color: Color.fromRGBO(239, 135, 20, 1),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
: RegExp(r'^\d+$').hasMatch(e) || (e.contains('%') && e.length < 4)
|
||||||
|
? Row(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
quickText(e,
|
||||||
|
color: isRatio
|
||||||
|
? Theme.of(context).primaryColor
|
||||||
|
: Color.fromRGBO(82, 82, 82, 1),
|
||||||
|
size: isRatio || noHasChineseCharacter ? 12.sp : 12.sp,
|
||||||
|
maxLines: 2),
|
||||||
|
quickText('透', color: Colors.transparent, size: 12.sp),
|
||||||
],
|
],
|
||||||
),
|
)
|
||||||
)
|
: quickText(e,
|
||||||
: RegExp(r'^\d+$').hasMatch(e) || (e.contains('%') && e.length < 4)
|
color: isRatio ? Theme.of(context).primaryColor : Color.fromRGBO(82, 82, 82, 1),
|
||||||
? Row(
|
size: isRatio || noHasChineseCharacter ? 12.sp : 12.sp,
|
||||||
mainAxisSize: MainAxisSize.min,
|
maxLines: 2),
|
||||||
children: [
|
);
|
||||||
quickText(e,
|
}).toList(),
|
||||||
color: isRatio
|
],
|
||||||
? Theme.of(context).primaryColor
|
);
|
||||||
: Color.fromRGBO(82, 82, 82, 1),
|
}).toList(),
|
||||||
size: isRatio || noHasChineseCharacter ? 12.sp : 12.sp,
|
],
|
||||||
maxLines: 2),
|
|
||||||
quickText('透', color: Colors.transparent, size: 12.sp),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
: quickText(e,
|
|
||||||
color: isRatio ? Theme.of(context).primaryColor : Color.fromRGBO(82, 82, 82, 1),
|
|
||||||
size: isRatio || noHasChineseCharacter ? 12.sp : 12.sp,
|
|
||||||
maxLines: 2),
|
|
||||||
);
|
|
||||||
}).toList(),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}).toList(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
@ -1494,7 +1522,7 @@ Widget $personnelDataOverview(BuildContext context, List<StudentAnswerInfos> stu
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
height: isPad() ? 290.h : 264.h,
|
// height: isPad() ? 290.h : 264.h,
|
||||||
margin: EdgeInsets.only(top: 20.h),
|
margin: EdgeInsets.only(top: 20.h),
|
||||||
padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 12.w),
|
padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 12.w),
|
||||||
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.r)),
|
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.r)),
|
||||||
|
|
@ -1505,57 +1533,55 @@ Widget $personnelDataOverview(BuildContext context, List<StudentAnswerInfos> stu
|
||||||
child: quickText('人员数据概况', color: Color.fromRGBO(92, 92, 92, 1), size: 14.sp, fontWeight: FontWeight.bold),
|
child: quickText('人员数据概况', color: Color.fromRGBO(92, 92, 92, 1), size: 14.sp, fontWeight: FontWeight.bold),
|
||||||
margin: EdgeInsets.only(bottom: 20.h),
|
margin: EdgeInsets.only(bottom: 20.h),
|
||||||
),
|
),
|
||||||
Expanded(
|
Scrollbar(
|
||||||
child: Scrollbar(
|
thickness: 8.w,
|
||||||
thickness: 8.w,
|
thumbVisibility: true,
|
||||||
thumbVisibility: true,
|
trackVisibility: true,
|
||||||
trackVisibility: true,
|
radius: Radius.circular(10.r),
|
||||||
radius: Radius.circular(10.r),
|
child: SingleChildScrollView(
|
||||||
child: SingleChildScrollView(
|
scrollDirection: Axis.horizontal,
|
||||||
scrollDirection: Axis.horizontal,
|
child: Column(
|
||||||
child: Column(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
children: [
|
||||||
children: [
|
...mapData.entries.map((entrie) {
|
||||||
...mapData.entries.map((entrie) {
|
bool isTransparentChinese = ['答题时长', '正确率', '未答题数'].contains(entrie.key); // 透明中文
|
||||||
bool isTransparentChinese = ['答题时长', '正确率', '未答题数'].contains(entrie.key); // 透明中文
|
|
||||||
|
|
||||||
return Row(
|
return Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
width: 94.r,
|
width: 94.r,
|
||||||
|
alignment: Alignment.center,
|
||||||
|
color: Color.fromRGBO(230, 230, 230, 1),
|
||||||
|
margin: EdgeInsets.only(bottom: 1.h, right: 1.w),
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 8.w),
|
||||||
|
child: quickText(entrie.key, color: Color.fromRGBO(24, 35, 77, 1), size: 12.sp, maxLines: 2),
|
||||||
|
),
|
||||||
|
...entrie.value.map((e) {
|
||||||
|
bool isTransparentChineseNew = isTransparentChinese && (e?.length ?? 0) == 0;
|
||||||
|
return Container(
|
||||||
|
width: 100.r,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
color: Color.fromRGBO(230, 230, 230, 1),
|
|
||||||
margin: EdgeInsets.only(bottom: 1.h, right: 1.w),
|
margin: EdgeInsets.only(bottom: 1.h, right: 1.w),
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 8.w),
|
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 8.w),
|
||||||
child: quickText(entrie.key, color: Color.fromRGBO(24, 35, 77, 1), size: 12.sp, maxLines: 2),
|
color: Color.fromRGBO(245, 245, 245, 1),
|
||||||
),
|
child: isTransparentChineseNew
|
||||||
...entrie.value.map((e) {
|
? quickText('透明', color: Colors.transparent, size: 12.sp)
|
||||||
bool isTransparentChineseNew = isTransparentChinese && (e?.length ?? 0) == 0;
|
: RegExp(r'^\d+$').hasMatch(e) || e.contains('%')
|
||||||
return Container(
|
? Row(
|
||||||
width: 100.r,
|
mainAxisSize: MainAxisSize.min,
|
||||||
alignment: Alignment.center,
|
children: [
|
||||||
margin: EdgeInsets.only(bottom: 1.h, right: 1.w),
|
quickText(e, color: Color.fromRGBO(82, 82, 82, 1), size: 12.sp, maxLines: 2),
|
||||||
padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 8.w),
|
quickText('透', color: Colors.transparent, size: 12.sp),
|
||||||
color: Color.fromRGBO(245, 245, 245, 1),
|
],
|
||||||
child: isTransparentChineseNew
|
)
|
||||||
? quickText('透明', color: Colors.transparent, size: 12.sp)
|
: quickText(e, color: Color.fromRGBO(82, 82, 82, 1), size: 12.sp, maxLines: 2),
|
||||||
: RegExp(r'^\d+$').hasMatch(e) || e.contains('%')
|
);
|
||||||
? Row(
|
}).toList(),
|
||||||
mainAxisSize: MainAxisSize.min,
|
],
|
||||||
children: [
|
);
|
||||||
quickText(e, color: Color.fromRGBO(82, 82, 82, 1), size: 12.sp, maxLines: 2),
|
}).toList(),
|
||||||
quickText('透', color: Colors.transparent, size: 12.sp),
|
],
|
||||||
],
|
|
||||||
)
|
|
||||||
: quickText(e, color: Color.fromRGBO(82, 82, 82, 1), size: 12.sp, maxLines: 2),
|
|
||||||
);
|
|
||||||
}).toList(),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}).toList(),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
|
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
|
||||||
import 'package:marking_app/utils/easy_refresh/MyEmptyWidget.dart';
|
import 'package:marking_app/utils/easy_refresh/MyEmptyWidget.dart';
|
||||||
|
import 'package:marking_app/utils/index.dart';
|
||||||
import 'package:marking_app/utils/toast_utils.dart';
|
import 'package:marking_app/utils/toast_utils.dart';
|
||||||
import 'package:photo_view/photo_view.dart';
|
import 'package:photo_view/photo_view.dart';
|
||||||
|
|
||||||
|
|
@ -283,6 +284,7 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
bool isPadFlag = isPad();
|
||||||
return DataTable2(
|
return DataTable2(
|
||||||
dividerThickness: 0,
|
dividerThickness: 0,
|
||||||
scrollController: _controller,
|
scrollController: _controller,
|
||||||
|
|
@ -314,7 +316,7 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
fixedCornerColor: Colors.grey[400],
|
fixedCornerColor: Colors.grey[400],
|
||||||
minWidth: widget.headList.length > 6
|
minWidth: widget.headList.length > 6
|
||||||
? 80.r * widget.headList.length
|
? 80.r * widget.headList.length
|
||||||
: MediaQuery.of(context).size.width,
|
: isPadFlag?MediaQuery.of(context).size.width:85.r * widget.headList.length,
|
||||||
fixedTopRows: widget.fixedRows!,
|
fixedTopRows: widget.fixedRows!,
|
||||||
fixedLeftColumns: widget.fixedCols!,
|
fixedLeftColumns: widget.fixedCols!,
|
||||||
sortColumnIndex: _sortColumnIndex,
|
sortColumnIndex: _sortColumnIndex,
|
||||||
|
|
@ -332,8 +334,8 @@ class _ReportTableState extends State<ReportTable> {
|
||||||
? 40.r
|
? 40.r
|
||||||
: widget.headList.length > 6
|
: widget.headList.length > 6
|
||||||
? 80.r
|
? 80.r
|
||||||
: (MediaQuery.of(context).size.width - 8.r) /
|
: isPadFlag?(MediaQuery.of(context).size.width - 8.r) /
|
||||||
widget.headList.length,
|
widget.headList.length:85.r,
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
rows: List<DataRow>.generate(widget.bodyList.length,
|
rows: List<DataRow>.generate(widget.bodyList.length,
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,9 @@ dependencies:
|
||||||
data_table_2: ^2.5.10
|
data_table_2: ^2.5.10
|
||||||
syncfusion_flutter_datepicker: ^21.2.10
|
syncfusion_flutter_datepicker: ^21.2.10
|
||||||
flutter_staggered_grid_view: ^0.6.2
|
flutter_staggered_grid_view: ^0.6.2
|
||||||
|
# 饼图
|
||||||
|
flutter_echart: ^2.0.0
|
||||||
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue