|
...
|
...
|
@@ -811,26 +811,26 @@ class _StressBarChartState extends State<_StressBarChart> { |
|
|
|
..sort((a, b) => a.fromTime.compareTo(b.fromTime));
|
|
|
|
|
|
|
|
// 2. 合并相邻且间隔小于 2 小时的睡眠区间,避免因短暂醒来分段导致多个床图标或跨天首尾大面积相连
|
|
|
|
// final mergedList = <V2SleepTimeRange>[];
|
|
|
|
// for (final range in sortedList) {
|
|
|
|
// if (mergedList.isEmpty) {
|
|
|
|
// mergedList.add(range);
|
|
|
|
// } else {
|
|
|
|
// final lastRange = mergedList.last;
|
|
|
|
// if (range.fromTime - lastRange.toTime <= 2 * 3600) {
|
|
|
|
// mergedList[mergedList.length - 1] = V2SleepTimeRange(
|
|
|
|
// fromTime: lastRange.fromTime,
|
|
|
|
// toTime: range.toTime > lastRange.toTime
|
|
|
|
// ? range.toTime
|
|
|
|
// : lastRange.toTime,
|
|
|
|
// );
|
|
|
|
// } else {
|
|
|
|
// mergedList.add(range);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// 2. 不合并睡眠段,直接使用排序后的列表
|
|
|
|
final mergedList = sortedList;
|
|
|
|
final mergedList = <V2SleepTimeRange>[];
|
|
|
|
for (final range in sortedList) {
|
|
|
|
if (mergedList.isEmpty) {
|
|
|
|
mergedList.add(range);
|
|
|
|
} else {
|
|
|
|
final lastRange = mergedList.last;
|
|
|
|
if (range.fromTime - lastRange.toTime <= 0.5 * 3600) {
|
|
|
|
mergedList[mergedList.length - 1] = V2SleepTimeRange(
|
|
|
|
fromTime: lastRange.fromTime,
|
|
|
|
toTime: range.toTime > lastRange.toTime
|
|
|
|
? range.toTime
|
|
|
|
: lastRange.toTime,
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
mergedList.add(range);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// // 2. 不合并睡眠段,直接使用排序后的列表
|
|
|
|
// final mergedList = sortedList;
|
|
|
|
|
|
|
|
// 3. 渲染合并后的睡眠区间 Positioned widgets
|
|
|
|
for (final range in mergedList) {
|
...
|
...
|
|