更新睡眠报告

This commit is contained in:
wyf
2025-05-27 23:09:31 +08:00
parent e0fef11b33
commit 98cd7f4e6a
54 changed files with 4450 additions and 1160 deletions

View File

@@ -9,7 +9,8 @@ import 'package:vbvs_app/pages/device_bind/componnet/bind_dialog.dart';
import 'package:vbvs_app/pages/sleep_report/chart/LineChartByRange.dart';
class SnoreViewWidgetWidget extends StatefulWidget {
SnoreViewWidgetWidget({super.key});
var sleepReport;
SnoreViewWidgetWidget({super.key, required this.sleepReport});
@override
State<SnoreViewWidgetWidget> createState() => _SnoreViewWidgetWidgetState();
@@ -33,17 +34,17 @@ class _SnoreViewWidgetWidgetState extends State<SnoreViewWidgetWidget> {
@override
Widget build(BuildContext context) {
var showLabel = [
{"startTime": 1744644751000, "endTime": 1744648351000, "times": 25},
{"startTime": 1744650031000, "endTime": 1744653631000, "times": 27},
{"startTime": 1744655011000, "endTime": 1744662211000, "times": 60},
// {"startTime": 1744657291000, "endTime": 1744657411000, "times": 28},
// {"startTime": 1744661011000, "endTime": 1744661131000, "times": 15},
// {"startTime": 1744668331000, "endTime": 1744668511000, "times": 48},
// {"startTime": 1744673431000, "endTime": 1744673551000, "times": 25},
];
var startTime = 1744641151000;
var endTime = 1744677151000;
if (widget.sleepReport == null ||
widget.sleepReport is! Map ||
widget.sleepReport.isEmpty) {
return Container();
}
List<Map<String, dynamic>> data =
(widget.sleepReport['ssp'] as List).cast<Map<String, dynamic>>();
List<Map<String, dynamic>> showLabel = convertToShowLabel(data);
var startTime = widget.sleepReport['startTime'];
var endTime = widget.sleepReport['endTime'];
return Container(
width: double.infinity,
decoration: BoxDecoration(
@@ -121,4 +122,45 @@ class _SnoreViewWidgetWidgetState extends State<SnoreViewWidgetWidget> {
),
);
}
List<Map<String, dynamic>> convertToShowLabel(
List<Map<String, dynamic>> data) {
if (data.isEmpty) return [];
data.sort((a, b) => a['st'].compareTo(b['st'])); // 确保时间有序
List<Map<String, dynamic>> result = [];
int startTime = data[0]['st'];
int endTime = data[0]['st'];
int currentValue = data[0]['value'];
for (int i = 1; i < data.length; i++) {
final item = data[i];
final st = item['st'];
final value = item['value'];
if (value == currentValue) {
endTime = st;
} else {
result.add({
"startTime": startTime,
"endTime": endTime,
"times": currentValue,
});
startTime = st;
endTime = st;
currentValue = value;
}
}
// 添加最后一段
result.add({
"startTime": startTime,
"endTime": endTime,
"times": currentValue,
});
return result;
}
}