import 'package:ef/ef.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:flutterflow_ui/flutterflow_ui.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/controller/sleep/sleep_report_controller.dart'; import 'package:vbvs_app/controller/theme_controller/ThemeController.dart'; import 'package:vbvs_app/pages/device_bind/componnet/bind_dialog.dart'; class WeekSleepDataModule extends StatefulWidget { final Map data; final dynamic sleepReportData; // 可选参数,类型为 var/dynamic const WeekSleepDataModule({ super.key, required this.data, this.sleepReportData, // 标记为可选参数 }); @override State createState() => _WeekSleepDataModuleState(); } class _WeekSleepDataModuleState extends State { @override void setState(VoidCallback callback) { super.setState(callback); } @override void initState() { super.initState(); } @override void dispose() { super.dispose(); } @override Widget build(BuildContext context) { ThemeController themeController = Get.find(); return ClickableContainer( backgroundColor: themeController.currentColor.sc5, highlightColor: themeController.currentColor.sc21, borderRadius: 20.rpx, padding: EdgeInsetsDirectional.fromSTEB(18.rpx, 10.rpx, 18.rpx, 10.rpx), onTap: () { showTipDialog( backgroundColor: stringToColor("#FFFFFF"), context, Container( constraints: BoxConstraints( maxHeight: 700.rpx, ), child: SingleChildScrollView( child: Column( children: [ Text( "${widget.data['name']}", style: TextStyle( color: stringToColor("#333333"), fontSize: 36.rpx, ), ), SizedBox( height: 17.rpx, ), // Text( // (widget.data['tips']?.toString().trim().isNotEmpty ?? false) // ? widget.data['tips'].toString() // : "未知数据".tr, // style: TextStyle( // color: stringToColor("#C8CBD2"), // fontSize: 26.rpx, // ), // ), // SizedBox( // height: 37.rpx, // ), Text( "${widget.data['value']}" + ((widget.data['unit'] == null || widget.data['unit'].toString().isEmpty) ? '' : widget.data['unit']), style: TextStyle( color: stringToColor("${widget.data['color']}"), fontSize: 60.rpx, ), ), // SizedBox( // height: 81.rpx, // ), // IntrinsicHeight( // child: Row( // crossAxisAlignment: CrossAxisAlignment.stretch, // children: [ // for (int i = 0; i < levelGroups.length; i++) ...[ // // 每个 levelGroup 区域 // Expanded( // child: Column( // mainAxisSize: MainAxisSize.min, // children: [ // // Level 名称 // Text( // levelGroups[i]['levelName'], // style: TextStyle( // fontSize: 30.rpx, // color: stringToColor("#333333"), // fontWeight: FontWeight.bold, // ), // ), // SizedBox(height: 38.rpx), ], ), ), ), ); if (widget.data['onto'] != null && widget.data['onto'] == true) { //跳转睡眠报告 Get.toNamed("/newSleepReportPage", arguments: { 'date': widget.data['time'] != null ? int.parse(widget.data['time'].toString()) : DateTime.now().millisecondsSinceEpoch, "mac": widget.data['mac'] != null && widget.data['mac'].isNotEmpty ? widget.data['mac'] : 'aaaaaaeeeeeq', 'type': 1, 'name': 'sleep', //'sleep', 'heartRate' 或 'breathe' 'itemName': widget.data['id'], 'person': widget.data['person'], }); } }, child: Container( width: MediaQuery.sizeOf(context).width * 0.267, constraints: BoxConstraints( minWidth: 200.rpx, minHeight: 161.rpx, ), child: Column( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Text( '${widget.data['name']}', style: TextStyle( fontFamily: 'Inter', fontSize: 26.rpx, letterSpacing: 0.0, color: themeController.currentColor.sc3, ), maxLines: 1, overflow: TextOverflow.ellipsis, ), Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded( child: Text.rich( TextSpan( children: [ TextSpan( text: '${widget.data['value']}', style: TextStyle( fontFamily: 'Inter', fontSize: 36.rpx, letterSpacing: 0.0, color: themeController.currentColor.sc3, ), ), WidgetSpan(child: SizedBox(width: 2.rpx)), // 可选间距 TextSpan( text: widget.data['unit'] != null ? '${widget.data['unit']}' : '', style: TextStyle( fontFamily: 'Inter', fontSize: AppConstants().small_text_fontSize, letterSpacing: 0.0, color: themeController.currentColor.sc3, ), ), ], ), maxLines: 1, style: TextStyle( color: themeController.currentColor.sc3), // 强制 ellipsis 颜色 overflow: TextOverflow.ellipsis, ), ), if (widget.data['level'] != null) ClickableContainer( backgroundColor: (widget.data['color'] == null || widget.data['color'].toString().isEmpty) ? Colors.transparent : stringToColor(widget.data['color']), highlightColor: themeController.currentColor.sc3, padding: EdgeInsets.symmetric( horizontal: 0.rpx, vertical: 0.rpx, ), borderRadius: 8.rpx, onTap: () { print('Button pressed ...'); }, child: Container( alignment: Alignment.center, constraints: BoxConstraints( minWidth: 43.rpx, minHeight: 25.rpx, ), child: Text( '${widget.data['level']}', style: TextStyle( fontFamily: 'Inter Tight', color: themeController.currentColor.sc3, letterSpacing: 0.0, fontSize: 15.rpx, ), ), ), ), ].divide(SizedBox(width: 0.rpx)), ), Text( "正常值".tr + '${(widget.data['range'] ?? '').toString().isEmpty ? '未知数据'.tr : widget.data['range']}', style: TextStyle( fontFamily: 'Inter', fontSize: AppConstants().small_text_fontSize, letterSpacing: 0.0, color: themeController.currentColor.sc4, ), maxLines: 1, overflow: TextOverflow.ellipsis, ), ], ), ), ); } }