Files
tuiche/lib/pages/sleep_report/component/ZiZhuShenJingPercentWidget.dart
2025-05-27 23:09:31 +08:00

142 lines
4.6 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/pages/device_bind/componnet/bind_dialog.dart';
import 'package:vbvs_app/pages/sleep_report/chart/StatusBarWithIndicator.dart';
class ZiZhuShenJingPercentWidget extends StatefulWidget {
var sleepReport;
ZiZhuShenJingPercentWidget({super.key, required this.sleepReport});
@override
State<ZiZhuShenJingPercentWidget> createState() =>
_ZiZhuShenJingPercentWidgetState();
}
class _ZiZhuShenJingPercentWidgetState
extends State<ZiZhuShenJingPercentWidget> {
@override
void setState(VoidCallback callback) {
super.setState(callback);
}
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
if (widget.sleepReport == null ||
widget.sleepReport['sicp'] == null ||
widget.sleepReport['sicp'].isEmpty) {
return Container();
}
int id = 100000;
List data = widget.sleepReport['sicp'];
final target = data.firstWhere(
(element) => element['id'] == id,
orElse: () => null, // 如果没有找到,返回 null你也可以抛异常或用 {} 替代)
);
if (target == null) {
return Container();
}
List<Map<String, dynamic>> showLabel = [];
if (target != null && target['type'] is List) {
showLabel = (target['type'] as List).map<Map<String, dynamic>>((item) {
return {
'key': item['type'],
'name': item['name'],
'color': stringToColor(item['color']),
};
}).toList();
}
return Container(
width: double.infinity,
decoration: BoxDecoration(
color: themeController.currentColor.sc5,
borderRadius: BorderRadius.circular(
AppConstants().normal_container_radius), // 你可以按需调整圆角半径
),
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(26.rpx, 29.rpx, 26.rpx, 45.rpx),
child: Column(
mainAxisSize: MainAxisSize.max,
children: [
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
"自主神经平衡指数".tr,
style: TextStyle(
color: themeController.currentColor.sc3,
fontSize: AppConstants().title_text_fontSize),
),
ClickableContainer(
backgroundColor: Colors.transparent,
highlightColor: Colors.white, // 或设置为你需要的水波纹颜色
padding: EdgeInsetsDirectional.fromSTEB(
14.rpx, 0.rpx, 14.rpx, 0), //
borderRadius: 0.rpx, // 圆形点击区域
onTap: () {
showTipDialog(
context,
Container(
child: Text(
"自主神经平衡指数监测介绍。",
style: TextStyle(
fontSize: 26.rpx,
color: themeController.currentColor.sc3,
),
),
),
);
},
child: Container(
padding: EdgeInsetsDirectional.fromSTEB(
0, 0.rpx, 0.rpx, 0), // 外部 padding 移到内部
width: 28.rpx,
height: 28.rpx,
child: SvgPicture.asset(
'assets/img/icon/explain.svg',
fit: BoxFit.cover,
color: themeController.currentColor.sc4,
),
),
),
],
),
),
SizedBox(
height: 83.rpx,
),
Padding(
padding:
EdgeInsetsDirectional.fromSTEB(30.rpx, 0.rpx, 30.rpx, 0.rpx),
child: StatusBarWithIndicator(
selectKey: target['value'],
showLabel: showLabel,
),
),
SizedBox(
height: 56.rpx,
),
],
),
),
);
}
}