This commit is contained in:
wyf
2025-06-17 19:12:30 +08:00
parent e34966aaba
commit f3f3e4f73f
117 changed files with 5479 additions and 6679 deletions

View File

@@ -91,6 +91,7 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
sleepReportController.updateAll();
print(res);
});
super.initState();
}
@@ -100,7 +101,40 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
}
@override
Widget build(BuildContext context) {
Widget build(BuildContext context) {
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';
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.sleepReport.value = res.data;
sleepReportController.updateAll();
_scrollToTargetComponent(sleepReportController.sleepReport);
},
onFailure: (res) {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
sleepReportController.sleepReport.value = {};
sleepReportController.updateAll();
print(res);
});
double lineWidth = 115.rpx;
return LayoutBuilder(
builder: (context, bodySize) => GestureDetector(
@@ -133,12 +167,12 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
/// 居中标题
Text(
'健康报告'.tr,
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3,
letterSpacing: 0,
fontSize: 30.rpx,
),
style: TextStyle(
fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3,
letterSpacing: 0,
fontSize: 30.rpx,
),
),
/// 左边返回按钮
@@ -206,26 +240,19 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
Alignment.center, // 文字居中
child: Text(
'日报'.tr,
style: FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: AppConstants()
.title_text_fontSize,
letterSpacing: 0.0,
color:
sleepReportController
.model
.type ==
1
? themeController
.currentColor
.sc2
: themeController
.currentColor
.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: AppConstants()
.title_text_fontSize,
letterSpacing: 0.0,
color: sleepReportController
.model.type ==
1
? themeController
.currentColor.sc2
: themeController
.currentColor.sc3,
),
),
),
SizedBox(height: 10.rpx),
@@ -413,29 +440,23 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
children: [
Text(
'姓名'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
Text(
'年龄'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
].divide(SizedBox(height: 34.rpx)),
),
@@ -453,29 +474,23 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
.data['person']!['name']
.toString()
: '未知数据'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
Text(
'${MyUtils.getAgeByDate(MyUtils.formatBirthdayTime(widget.data['person']?['birthday'])) ?? '未知数据'.tr}',
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
].divide(SizedBox(height: 34.rpx)),
),
@@ -501,29 +516,23 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
children: [
Text(
'设备ID'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
Text(
'体重'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
].divide(SizedBox(height: 34.rpx)),
),
@@ -534,31 +543,25 @@ class _MHTNewSleepReportPageState extends State<MHTNewSleepReportPage> {
Text(
'${widget.data['code'] ?? '未知数据'.tr}',
// "D11250300003",
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
Text(
'${widget.data['person']?['weight'] ?? '未知数据'.tr}kg',
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
].divide(SizedBox(height: 34.rpx)),
),

View File

@@ -112,12 +112,12 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
/// 居中标题
Text(
'健康报告'.tr,
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3,
letterSpacing: 0,
fontSize: 30.rpx,
),
style: TextStyle(
fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3,
letterSpacing: 0,
fontSize: 30.rpx,
),
),
/// 左边返回按钮
@@ -180,26 +180,19 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
Alignment.center, // 文字居中
child: Text(
'日报'.tr,
style: FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: AppConstants()
.title_text_fontSize,
letterSpacing: 0.0,
color:
sleepReportController
.model
.type ==
1
? themeController
.currentColor
.sc2
: themeController
.currentColor
.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: AppConstants()
.title_text_fontSize,
letterSpacing: 0.0,
color: sleepReportController
.model.type ==
1
? themeController
.currentColor.sc2
: themeController
.currentColor.sc3,
),
),
),
SizedBox(height: 10.rpx),
@@ -384,29 +377,23 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
children: [
Text(
'姓名'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
Text(
'年龄'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
].divide(SizedBox(height: 34.rpx)),
),
@@ -416,29 +403,23 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
children: [
Text(
'传感器1号',
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
Text(
'69',
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
].divide(SizedBox(height: 34.rpx)),
),
@@ -464,29 +445,23 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
children: [
Text(
'设备ID'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
Text(
'体重'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
].divide(SizedBox(height: 34.rpx)),
),
@@ -497,29 +472,23 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
Text(
'1231212',
// "D11250300003",
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
Text(
'55kg',
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
].divide(SizedBox(height: 34.rpx)),
),

View File

@@ -9,6 +9,7 @@ import 'package:vbvs_app/common/util/requestWithLog.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';
import 'package:vbvs_app/controller/home/home_controller.dart';
import 'package:vbvs_app/controller/sleep/sleep_report_controller.dart';
import 'package:vbvs_app/language/AppLanguage.dart';
import 'package:vbvs_app/pages/common/selectDialog.dart';
@@ -32,16 +33,16 @@ import 'package:vbvs_app/pages/sleep_report/component/ZiZhuShenJingPercentWidget
class NewSleepReportPage extends StatefulWidget {
var data;
NewSleepReportPage({super.key, required this.data});
NewSleepReportPage({super.key, required this.data}) {}
@override
State<NewSleepReportPage> createState() => _NewSleepReportPageState();
}
class _NewSleepReportPageState extends State<NewSleepReportPage> {
SleepReportController sleepReportController = Get.find();
late SleepReportController sleepReportController;
CalendarController calendarController = Get.find();
_NewSleepReportPageState() {}
final GlobalKey sleepCardKey = GlobalKey();
final GlobalKey heartRateCardKey = GlobalKey();
final GlobalKey breatheCardKey = GlobalKey();
@@ -58,6 +59,11 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
@override
void initState() {
if (Get.isRegistered<SleepReportController>(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();
@@ -91,7 +97,6 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
sleepReportController.updateAll();
print(res);
});
super.initState();
}
@override
@@ -101,6 +106,44 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
@override
Widget build(BuildContext context) {
if (Get.isRegistered<SleepReportController>(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';
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.sleepReport.value = res.data;
sleepReportController.updateAll();
_scrollToTargetComponent(sleepReportController.sleepReport);
},
onFailure: (res) {
TopSlideNotification.show(context,
text: res.msg!, textColor: themeController.currentColor.sc9);
sleepReportController.sleepReport.value = {};
sleepReportController.updateAll();
print(res);
});
double lineWidth = 115.rpx;
return LayoutBuilder(
builder: (context, bodySize) => GestureDetector(
@@ -133,12 +176,12 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
/// 居中标题
Text(
'健康报告'.tr,
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3,
letterSpacing: 0,
fontSize: 30.rpx,
),
style: TextStyle(
fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3,
letterSpacing: 0,
fontSize: 30.rpx,
),
),
/// 左边返回按钮
@@ -206,26 +249,19 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
Alignment.center, // 文字居中
child: Text(
'日报'.tr,
style: FlutterFlowTheme.of(
context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: AppConstants()
.title_text_fontSize,
letterSpacing: 0.0,
color:
sleepReportController
.model
.type ==
1
? themeController
.currentColor
.sc2
: themeController
.currentColor
.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: AppConstants()
.title_text_fontSize,
letterSpacing: 0.0,
color: sleepReportController
.model.type ==
1
? themeController
.currentColor.sc2
: themeController
.currentColor.sc3,
),
),
),
SizedBox(height: 10.rpx),
@@ -413,29 +449,23 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
children: [
Text(
'姓名'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
Text(
'年龄'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
].divide(SizedBox(height: 34.rpx)),
),
@@ -453,29 +483,23 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
.data['person']!['name']
.toString()
: '未知数据'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
Text(
'${MyUtils.getAgeByDate(MyUtils.formatBirthdayTime(widget.data['person']?['birthday'])) ?? '未知数据'.tr}',
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
].divide(SizedBox(height: 34.rpx)),
),
@@ -501,29 +525,23 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
children: [
Text(
'设备ID'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
Text(
'体重'.tr,
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc4,
),
),
].divide(SizedBox(height: 34.rpx)),
),
@@ -534,31 +552,25 @@ class _NewSleepReportPageState extends State<NewSleepReportPage> {
Text(
'${widget.data['code'] ?? '未知数据'.tr}',
// "D11250300003",
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
),
Text(
'${widget.data['person']?['weight'] ?? '未知数据'.tr}kg',
style:
FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
style: TextStyle(
fontFamily: 'Inter',
fontSize: 26.rpx,
letterSpacing: 0.0,
color: themeController
.currentColor.sc3,
),
),
].divide(SizedBox(height: 34.rpx)),
),

View File

@@ -66,7 +66,7 @@ class _SleepReportPageState extends State<SleepReportPage> {
/// 居中标题
Text(
'健康报告'.tr,
style: FlutterFlowTheme.of(context).bodyMedium.override(
style: TextStyle(
fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3,
letterSpacing: 0,