diff --git a/assets/file.json b/assets/file.json index 5cba84b..dde2fec 100644 --- a/assets/file.json +++ b/assets/file.json @@ -1,3 +1,3 @@ [ - "assets/miniapp/mhtControl_1.0.44.zip" + "assets/miniapp/mhtControl_1.0.49.zip" ] \ No newline at end of file diff --git a/assets/img/icon/home_breath.svg b/assets/img/icon/home_breath.svg new file mode 100644 index 0000000..a085d7b --- /dev/null +++ b/assets/img/icon/home_breath.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icon/home_heart.svg b/assets/img/icon/home_heart.svg new file mode 100644 index 0000000..75730d7 --- /dev/null +++ b/assets/img/icon/home_heart.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/img/icon/home_hrv.svg b/assets/img/icon/home_hrv.svg new file mode 100644 index 0000000..879277f --- /dev/null +++ b/assets/img/icon/home_hrv.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/miniapp/mhtControl_1.0.44.zip b/assets/miniapp/mhtControl_1.0.49.zip similarity index 97% rename from assets/miniapp/mhtControl_1.0.44.zip rename to assets/miniapp/mhtControl_1.0.49.zip index 2cf1990..dd3a0ca 100644 Binary files a/assets/miniapp/mhtControl_1.0.44.zip and b/assets/miniapp/mhtControl_1.0.49.zip differ diff --git a/lib/common/color/ServiceConstant.dart b/lib/common/color/ServiceConstant.dart index a2b607e..07e3c64 100644 --- a/lib/common/color/ServiceConstant.dart +++ b/lib/common/color/ServiceConstant.dart @@ -1,10 +1,10 @@ class ServiceConstant { - static const String baseHost = "zhmht.swes.com.cn:27021"; //服务地址 眠花糖测试地址 - // static const String baseHost = "zhmht.swes.com.cn:27020"; //服务地址 眠花糖正式地址 + // static const String baseHost = "zhmht.swes.com.cn:27021"; //服务地址 眠花糖测试地址 + static const String baseHost = "zhmht.swes.com.cn:27020"; //服务地址 眠花糖正式地址 // static const String baseHost = "vsbs-test.he-info.cn"; //服务地址 本地测试地址 // static const String baseHost = "vsbst-api.he-info.cn";//服务地址 - static const String service_address = "http://$baseHost"; - // static const String service_address = "https://$baseHost"; + // static const String service_address = "http://$baseHost"; + static const String service_address = "https://$baseHost"; static String server_service = "/vsbs_app_server"; //服务名称 diff --git a/lib/pages/mh_page/homepage/mht_sleep_report_page.dart b/lib/pages/mh_page/homepage/mht_sleep_report_page.dart index ee0cd80..7a2e2d6 100644 --- a/lib/pages/mh_page/homepage/mht_sleep_report_page.dart +++ b/lib/pages/mh_page/homepage/mht_sleep_report_page.dart @@ -9,6 +9,7 @@ import 'package:vbvs_app/common/color/app_uri_status.dart'; import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/requestWithLog.dart'; +import 'package:vbvs_app/component/NullDataComponentWidget.dart'; import 'package:vbvs_app/component/tool/ClickableContainer.dart'; import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; import 'package:vbvs_app/controller/date/CalendarController.dart'; @@ -19,10 +20,8 @@ import 'package:vbvs_app/pages/common/selectDialog.dart'; import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart'; import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart'; import 'package:vbvs_app/pages/sleep_report/component/SleepScoreWidget.dart'; -import 'package:vbvs_app/pages/sleep_report/component/SleepView.dart'; import 'package:vbvs_app/pages/sleep_report/component/Vital_signs.dart'; import 'package:vbvs_app/pages/sleep_report/component/new_sleep_view.dart'; -import 'package:vbvs_app/pages/sleep_report/new_sleep_report_page.dart'; class MhtSleepReportPage extends StatefulWidget { const MhtSleepReportPage({super.key}); @@ -41,6 +40,7 @@ class _MhtSleepReportPageState extends State { final RxBool isRightLimit = false.obs; var formFieldController = FormFieldController(null); var personInfo = {}.obs; + Rx isLoading = false.obs; @override void initState() { @@ -332,6 +332,9 @@ class _MhtSleepReportPageState extends State { } }).toList(), onChanged: (val) { + sleepReportController + .sleepReport + .value = {}; final list = deviceController .personnelList @@ -363,9 +366,15 @@ class _MhtSleepReportPageState extends State { .value = formFieldController .value!; - deviceController.getSleeps( - formFieldController - .value); + // deviceController.getSleeps( + // formFieldController + // .value); + String data = + MyUtils.formatDate( + calendarController + .selectedDate + .value!); + loadSleepReport(data); homeController .updateAll(); } @@ -469,45 +478,58 @@ class _MhtSleepReportPageState extends State { }), Obx(() { - if (homeController.selectDevcie.value != null && + if (userInfoController.model.login! == null || + userInfoController.model.login! == 0 || + deviceController.personnelList.value.isEmpty) { + return Container(); + } + final bool hasValidData = homeController + .selectDevcie.value != + null && homeController.selectDevcie.value!.isNotEmpty && deviceController.personnelList.value.isNotEmpty && - sleepReportController.sleepReport.value != null) { - return Expanded( - child: SingleChildScrollView( - child: Column( - children: [ - getTimeWidget(), - SleepScoreWidget( - sleepReport: - sleepReportController.sleepReport.value, - showLabelWrap: false, - ), - NewSleepViewWidget( - sleepReport: - sleepReportController.sleepReport.value), - SizedBox(height: 25.rpx), - VitalSignsWidget( - sleepReport: - sleepReportController.sleepReport.value) - ], + sleepReportController.sleepReport.value != null && + sleepReportController.sleepReport.value.isNotEmpty; - // child: NewSleepReportPage( - // data: { - // "tag": "123", - // 'date': DateTime.now().millisecondsSinceEpoch, - // 'mac'.tr: homeController.selectDevcie.value, - // 'person': homeController.selectPerson.value, - // 'backgroundImg': - // 'assets/images/new_background.png', - // 'arrow': false, - // 'noBackImg': true, - // 'person_show': false, - // }, - // ), - ))); - } - return Container(); + return Expanded( + child: SingleChildScrollView( + child: Column( + children: [ + getTimeWidget(), // 始终显示 + isLoading.value + ? Padding( + padding: EdgeInsets.fromLTRB( + 0, 30.rpx, 0, 0), + child: Center( + child: CircularProgressIndicator()), + ) + : hasValidData + ? Column( + children: [ + SleepScoreWidget( + sleepReport: + sleepReportController + .sleepReport.value, + showLabelWrap: false, + ), + NewSleepViewWidget( + sleepReport: + sleepReportController + .sleepReport.value, + ), + SizedBox(height: 25.rpx), + VitalSignsWidget( + sleepReport: + sleepReportController + .sleepReport.value, + ), + ], + ) + : NullDataWidget(), // 无数据时 + ], + ), + ), + ); }), ], ); @@ -636,17 +658,20 @@ class _MhtSleepReportPageState extends State { } void loadSleepReport(String data) { + isLoading.value = true; requestWithLog( logTitle: "查询睡眠报告", method: MyHttpMethod.get, queryUrl: "https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${homeController.selectDevcie.value}&time=${data}&type=${sleepReportController.model.type}", onSuccess: (res) { + isLoading.value = false; print(res); sleepReportController.sleepReport.value = res.data; sleepReportController.updateAll(); }, onFailure: (res) { + isLoading.value = false; if (MainPageBBottomChange.getCurrentIndex() != null) { if (MainPageBBottomChange.getCurrentIndex() == 1) { TopSlideNotification.show(context, diff --git a/lib/pages/mh_page/homepage/new_Home_page.dart b/lib/pages/mh_page/homepage/new_Home_page.dart index bbb3546..c94d1a3 100644 --- a/lib/pages/mh_page/homepage/new_Home_page.dart +++ b/lib/pages/mh_page/homepage/new_Home_page.dart @@ -632,9 +632,7 @@ class _NewHomePageState extends State { personInfo .value, 'backgroundImg': - 'assets/images/new_background.png', - 'date': - timeMillis, + 'assets/images/new_background.png', // 'backgroundColor':stringToColor("#003058"), 'person_show': false, diff --git a/lib/pages/sleep_report/component/Vital_signs.dart b/lib/pages/sleep_report/component/Vital_signs.dart index 8b41d23..af46c10 100644 --- a/lib/pages/sleep_report/component/Vital_signs.dart +++ b/lib/pages/sleep_report/component/Vital_signs.dart @@ -1,15 +1,13 @@ +import 'package:EasyDartModule/EasyDartModule.dart' as es; import 'package:ef/ef.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; -import 'package:path/path.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/GradientLine.dart'; -import 'package:vbvs_app/pages/sleep_report/chart/SnoreWaveform.dart'; -import 'package:EasyDartModule/EasyDartModule.dart' as es; +import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart'; //睡眠规律性 class VitalSignsWidget extends StatefulWidget { @@ -67,6 +65,38 @@ class _VitalSignsWidgetState extends State { orElse: () => {}, ); + List svgList = [ + 'assets/img/icon/home_heart.svg', + 'assets/img/icon/home_hrv.svg', + 'assets/img/icon/home_breath.svg' + ]; + List nameList = ['平均心率'.tr, '平均hrv'.tr, '平均呼吸'.tr]; + // brs 307【平均呼吸】 + // hrs 206【平均心率】 203【hrv】 + final hrsList = widget.sleepReport['hrs'] ?? []; + final brsList = widget.sleepReport['brs'] ?? []; + +// 获取对应 id 的原始 value + final avgHeartRate = hrsList.firstWhere( + (e) => e['id'] == 206, + orElse: () => {}, + ); + final hrv = hrsList.firstWhere( + (e) => e['id'] == 203, + orElse: () => {}, + ); + final avgBreath = brsList.firstWhere( + (e) => e['id'] == 307, + orElse: () => {}, + ); + +// 构建 valueList(原始数据,未格式化) + List valueList = [ + avgHeartRate['value'], + hrv['value'], + avgBreath['value'], + ]; + List stages = widget.sleepReport['sleepData']['stages']; return Container( width: double.infinity, @@ -102,8 +132,7 @@ class _VitalSignsWidgetState extends State { context, Container( child: Text( - "睡眠规律性是指个体睡眠模式在时间、时长、环境等方面呈现出的稳定性和一致性,是衡量睡眠质量的重要指标之一。" - .tr, + "生命体征指的是睡眠周期的整体数据。".tr, style: TextStyle( fontSize: 26.rpx, color: Colors.black, @@ -133,43 +162,75 @@ class _VitalSignsWidgetState extends State { ], ), ), + SizedBox( + height: 98.rpx, + ), Row( - children: [ - Column( - children: [ - Text( - "1", - style: TextStyle( - color: themeController.currentColor.sc3, - fontSize: AppConstants().title_text_fontSize), + children: List.generate(3, (index) { + return Expanded( + // 平均宽度 + child: SizedBox( + // height: 120.rpx, // 固定高度,例如 120.rpx,根据实际调整 + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + padding: EdgeInsetsDirectional.fromSTEB( + 0, 0.rpx, 0.rpx, 0), // 外部 padding 移到内部 + width: 42.rpx, + height: 42.rpx, + child: SvgPicture.asset( + svgList[index], + fit: BoxFit.cover, + // color: themeController.currentColor.sc4, + ), + ), + SizedBox(width: 5.rpx), + Text( + valueList[index] == null || + valueList[index].toString().isEmpty + ? "-" + : "${valueList[index]}", + style: TextStyle( + color: themeController.currentColor.sc3, + fontSize: 60.rpx, + ), + ), + ], + ), + SizedBox(height: 42.rpx), + Text( + "${nameList[index]}", + style: TextStyle( + color: stringToColor("#929699"), + fontSize: AppConstants().normal_text_fontSize, + ), + ), + ], ), - ], - ), - Column( - children: [ - Text( - "1", - style: TextStyle( - color: themeController.currentColor.sc3, - fontSize: AppConstants().title_text_fontSize), - ) - ], - ), - Column( - children: [ - Text( - "1", - style: TextStyle( - color: themeController.currentColor.sc3, - fontSize: AppConstants().title_text_fontSize), - ) - ], - ) - ], + ), + ); + }), + ), + SizedBox( + height: 130.rpx, ), Row(mainAxisAlignment: MainAxisAlignment.end, children: [ OutlinedButton( - onPressed: () {}, + onPressed: () { + MHTHomeController homeController = Get.find(); + Get.toNamed("/newSleepReportPage", arguments: { + 'date': widget.sleepReport['startTime'], + "mac": homeController.selectDevcie.value, + 'type': 1, + 'backgroundImg': 'assets/images/new_background.png', + 'person_show': false, + 'itemName': 206, + }); + }, style: OutlinedButton.styleFrom( side: const BorderSide(color: Color(0XFF85F5FF)), foregroundColor: Color(0XFF85F5FF), diff --git a/lib/pages/sleep_report/component/new_sleep_view.dart b/lib/pages/sleep_report/component/new_sleep_view.dart index 4c88693..3cd1590 100644 --- a/lib/pages/sleep_report/component/new_sleep_view.dart +++ b/lib/pages/sleep_report/component/new_sleep_view.dart @@ -1,3 +1,4 @@ +import 'package:EasyDartModule/EasyDartModule.dart' as es; import 'package:ef/ef.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; @@ -6,9 +7,8 @@ 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/GradientLine.dart'; +import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart'; import 'package:vbvs_app/pages/sleep_report/chart/SnoreWaveform.dart'; -import 'package:EasyDartModule/EasyDartModule.dart' as es; //睡眠规律性 class NewSleepViewWidget extends StatefulWidget { @@ -48,8 +48,27 @@ class _NewSleepViewWidgetState extends State { .where((item) => item['show'] != false) .toList(); final bsList = widget.sleepReport['bs'] as List; + final deepSleep = + bsList.firstWhere((e) => e['id'] == 111, orElse: () => null); + final lightSleep = + bsList.firstWhere((e) => e['id'] == 117, orElse: () => null); + final snore = + bsList.firstWhere((e) => e['id'] == 116, orElse: () => null); + final movement = + bsList.firstWhere((e) => e['id'] == 108, orElse: () => null); + final leaveBed = + bsList.firstWhere((e) => e['id'] == 114, orElse: () => null); + + final Map typeIdMap = { + 0: 114, // 离床时长 + 1: 117, // 浅睡时长 + 2: 111, // 深睡时长 + 3: 108, // 频繁体动时长 + 4: 116, // 打鼾时长 + }; List snoreValues = []; + List lightSnore = widget.sleepReport['ssp']['data'][0]; List heavySnore = widget.sleepReport['ssp']['data'][1]; snoreValues = [...lightSnore, ...heavySnore]; @@ -156,10 +175,53 @@ class _NewSleepViewWidgetState extends State { SizedBox( height: 70.rpx, ), + // Wrap( + // spacing: 55.rpx, + // runSpacing: 20.rpx, + // children: showLabel.map((item) { + // return Container( + // padding: EdgeInsets.all(5.rpx), + // child: Row( + // mainAxisSize: MainAxisSize.min, + // children: [ + // Container( + // width: 20.rpx, + // height: 20.rpx, + // decoration: BoxDecoration( + // color: item["color"] == null || item["color"] == "" + // ? Colors.transparent + // : stringToColor(item["color"]), + // borderRadius: BorderRadius.circular(10.rpx), + // ), + // ), + // SizedBox(width: 17.rpx), + // Text( + // item["name"], + // style: TextStyle( + // color: Colors.white, + // fontSize: 24.rpx, + // ), + // ), + // ], + // ), + // ); + // }).toList(), + // ), Wrap( spacing: 55.rpx, runSpacing: 20.rpx, children: showLabel.map((item) { + final int type = item["type"]; + final int? targetId = typeIdMap[type]; + + // 在 bsList 中查找对应 id 的元素 + final matchedItem = bsList.firstWhere( + (e) => e["id"] == targetId, + orElse: () => {}, + ); + + final dynamic value = matchedItem?["value"]; + final String displayValue = formatHourToHM(value); return Container( padding: EdgeInsets.all(5.rpx), child: Row( @@ -177,7 +239,9 @@ class _NewSleepViewWidgetState extends State { ), SizedBox(width: 17.rpx), Text( - item["name"], + value != null + ? "${item["name"]} $displayValue" + : "${item["name"]} -", style: TextStyle( color: Colors.white, fontSize: 24.rpx, @@ -188,9 +252,19 @@ class _NewSleepViewWidgetState extends State { ); }).toList(), ), + Row(mainAxisAlignment: MainAxisAlignment.end, children: [ OutlinedButton( - onPressed: () {}, + onPressed: () { + MHTHomeController homeController = Get.find(); + Get.toNamed("/newSleepReportPage", arguments: { + 'date': widget.sleepReport['startTime'], + "mac": homeController.selectDevcie.value, + 'type': 1, + 'backgroundImg': 'assets/images/new_background.png', + 'person_show': false, + }); + }, style: OutlinedButton.styleFrom( side: const BorderSide(color: Color(0XFF85F5FF)), foregroundColor: Color(0XFF85F5FF), @@ -255,4 +329,19 @@ class _NewSleepViewWidgetState extends State { } }).toList(); } + + String formatHourToHM(dynamic value) { + if (value == null) return "-"; + if (value is num) { + int hours = value.floor(); + int minutes = ((value - hours) * 60).round(); + + if (hours > 0) { + return "${hours}h ${minutes}m"; + } else { + return "${minutes}m"; + } + } + return "-"; + } } diff --git a/lib/pages/sleep_report/new_sleep_report_page.dart b/lib/pages/sleep_report/new_sleep_report_page.dart index 71567c3..f52f87d 100644 --- a/lib/pages/sleep_report/new_sleep_report_page.dart +++ b/lib/pages/sleep_report/new_sleep_report_page.dart @@ -58,7 +58,7 @@ class _NewSleepReportPageState extends State { Get.put(tag: widget.data["tag"], SleepReportController()); } sleepReportController = Get.find(tag: widget.data["tag"]); - sleepReportController.sleepReport.value = {}; + // sleepReportController.sleepReport.value = {}; if (widget.data['date'] == null) { widget.data['date'] = DateTime.now().millisecondsSinceEpoch; @@ -109,52 +109,60 @@ class _NewSleepReportPageState extends State { @override Widget build(BuildContext context) { - if (Get.isRegistered(tag: widget.data["tag"]) == - false) { - Get.put(tag: widget.data["tag"], SleepReportController()); - } - sleepReportController = Get.find(tag: widget.data["tag"]); - sleepReportController.sleepReport.value = {}; + Future.microtask(() { + _initSleepReportData(); + }); + // try { + // if (Get.isRegistered(tag: widget.data["tag"]) == + // false) { + // Get.put(tag: widget.data["tag"], SleepReportController()); + // } + // sleepReportController = Get.find(tag: widget.data["tag"]); + // // sleepReportController.sleepReport.value = {}; - if (widget.data['date'] == null) { - widget.data['date'] = DateTime.now(); - } - calendarController.selectedDate.value = - DateTime.fromMillisecondsSinceEpoch(widget.data['date']); - sleepReportController.selectedDate.value = - DateTime.fromMillisecondsSinceEpoch(widget.data['date']); - if (widget.data['type'] != null) { - sleepReportController.model.type = widget.data['type']; - } else { - sleepReportController.model.type = 1; - } - String date = MyUtils.formatToDate(widget.data['date']); - // String date = '2025-5-27'; - sleepReportController.isLoading.value = true; - requestWithLog( - logTitle: "查询睡眠报告", - method: MyHttpMethod.get, - queryUrl: - "https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${widget.data['mac']}&time=${date}&type=${sleepReportController.model.type}", - onSuccess: (res) { - print(res); - sleepReportController.isLoading.value = false; - sleepReportController.sleepReport.value = res.data; - sleepReportController.updateAll(); - _scrollToTargetComponent(sleepReportController.sleepReport); - }, - onFailure: (res) { - if (MainPageBBottomChange.getCurrentIndex() != null) { - if (MainPageBBottomChange.getCurrentIndex() == 1) { - TopSlideNotification.show(context, - text: res.msg!, textColor: themeController.currentColor.sc9); - } - } else {} - sleepReportController.sleepReport.value = {}; - sleepReportController.isLoading.value = false; - sleepReportController.updateAll(); - print(res); - }); + // if (widget.data['date'] == null) { + // widget.data['date'] = DateTime.now(); + // } + // calendarController.selectedDate.value = + // DateTime.fromMillisecondsSinceEpoch(widget.data['date']); + // sleepReportController.selectedDate.value = + // DateTime.fromMillisecondsSinceEpoch(widget.data['date']); + // if (widget.data['type'] != null) { + // sleepReportController.model.type = widget.data['type']; + // } else { + // sleepReportController.model.type = 1; + // } + // String date = MyUtils.formatToDate(widget.data['date']); + // // String date = '2025-5-27'; + // sleepReportController.isLoading.value = true; + // requestWithLog( + // logTitle: "查询睡眠报告", + // method: MyHttpMethod.get, + // queryUrl: + // "https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${widget.data['mac']}&time=${date}&type=${sleepReportController.model.type}", + // onSuccess: (res) { + // print(res); + // sleepReportController.isLoading.value = false; + // sleepReportController.sleepReport.value = res.data; + // sleepReportController.updateAll(); + // _scrollToTargetComponent(sleepReportController.sleepReport); + // }, + // onFailure: (res) { + // if (MainPageBBottomChange.getCurrentIndex() != null) { + // if (MainPageBBottomChange.getCurrentIndex() == 1) { + // TopSlideNotification.show(context, + // text: res.msg!, + // textColor: themeController.currentColor.sc9); + // } + // } else {} + // sleepReportController.sleepReport.value = {}; + // sleepReportController.isLoading.value = false; + // sleepReportController.updateAll(); + // print(res); + // }); + // } catch (e) { + // ef.log("$e"); + // } double lineWidth = 115.rpx; return LayoutBuilder( builder: (context, bodySize) => GestureDetector( @@ -174,7 +182,7 @@ class _NewSleepReportPageState extends State { ), child: Scaffold( backgroundColor: Colors.transparent, // 背景透明 - + appBar: (widget.data['arrow'] != null && widget.data['arrow'] == false) ? null @@ -655,7 +663,6 @@ class _NewSleepReportPageState extends State { Stack( alignment: Alignment.bottomLeft, children: [ - Row( mainAxisAlignment: MainAxisAlignment.spaceAround, @@ -1325,7 +1332,6 @@ class _NewSleepReportPageState extends State { return; } WidgetsBinding.instance.addPostFrameCallback((_) { - final targetName = widget.data['name']; final targetID = widget.data['itemName']; GlobalKey? targetKey; @@ -1414,4 +1420,55 @@ class _NewSleepReportPageState extends State { ); }); } + + void _initSleepReportData() { + try { + if (Get.isRegistered(tag: widget.data["tag"]) == + false) { + Get.put(tag: widget.data["tag"], SleepReportController()); + } + sleepReportController = Get.find(tag: widget.data["tag"]); + + if (widget.data['date'] == null) { + widget.data['date'] = DateTime.now(); + } + + final dateTime = DateTime.fromMillisecondsSinceEpoch(widget.data['date']); + calendarController.selectedDate.value = dateTime; + sleepReportController.selectedDate.value = dateTime; + + sleepReportController.model.type = widget.data['type'] ?? 1; + + String dateStr = MyUtils.formatToDate(widget.data['date']); + + sleepReportController.isLoading.value = true; + + requestWithLog( + logTitle: "查询睡眠报告", + method: MyHttpMethod.get, + queryUrl: + "https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${widget.data['mac']}&time=$dateStr&type=${sleepReportController.model.type}", + onSuccess: (res) { + sleepReportController.isLoading.value = false; + sleepReportController.sleepReport.value = res.data; + sleepReportController.updateAll(); + _scrollToTargetComponent(sleepReportController.sleepReport); + }, + onFailure: (res) { + if (MainPageBBottomChange.getCurrentIndex() == 1) { + TopSlideNotification.show( + context, + text: res.msg!, + textColor: themeController.currentColor.sc9, + ); + } + sleepReportController.sleepReport.value = {}; + sleepReportController.isLoading.value = false; + sleepReportController.updateAll(); + }, + ); + } catch (e) { + ef.log("$e"); + } + } }