today_controller.dart
3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import 'package:doublefeel_flutter/core/services/user_state_service.dart';
import 'package:get/get.dart';
/// 每日行动 item 数据模型
class DailyActionItem {
final String label;
final String value;
final String unit;
final String? subValue;
final String? subUnit;
const DailyActionItem({
required this.label,
required this.value,
required this.unit,
this.subValue,
this.subUnit,
});
}
/// HRV 趋势数据点
class HrvDataPoint {
final double hour; // 0.0 ~ 24.0
final double hrv;
const HrvDataPoint({required this.hour, required this.hrv});
}
/// HRV tooltip 标注点
class HrvAnnotation {
final double hour;
final double hrv;
final String stateLabel; // e.g. "状态优秀"
final String detail; // e.g. "HRV 23ms · 11:28"
const HrvAnnotation({
required this.hour,
required this.hrv,
required this.stateLabel,
required this.detail,
});
}
class TodayController extends GetxController {
final UserStateService userStateService = Get.find<UserStateService>();
// ── 压力状态 ─────────────────────────────
final stressLabel = '状态正常'.obs;
// ── HRV 表盘引导 Banner ───────────────────
final showHrvAdBanner = true.obs;
void dismissHrvAdBanner() => showHrvAdBanner.value = false;
// ── HRV 数字 + 心率 ───────────────────────
final avgHrv = 46.obs;
final restingHeartRate = 63.obs;
// ── HRV 趋势图 ────────────────────────────
final List<HrvDataPoint> hrvChartData = const [
HrvDataPoint(hour: 0, hrv: 30),
HrvDataPoint(hour: 1, hrv: 45),
HrvDataPoint(hour: 2, hrv: 40),
HrvDataPoint(hour: 3, hrv: 55),
HrvDataPoint(hour: 4, hrv: 50),
HrvDataPoint(hour: 5, hrv: 60),
HrvDataPoint(hour: 6, hrv: 65),
HrvDataPoint(hour: 7, hrv: 70),
HrvDataPoint(hour: 8, hrv: 62),
HrvDataPoint(hour: 9, hrv: 58),
HrvDataPoint(hour: 10, hrv: 75),
HrvDataPoint(hour: 11, hrv: 80),
HrvDataPoint(hour: 12, hrv: 72),
HrvDataPoint(hour: 13, hrv: 68),
HrvDataPoint(hour: 14, hrv: 55),
HrvDataPoint(hour: 15, hrv: 50),
HrvDataPoint(hour: 16, hrv: 45),
HrvDataPoint(hour: 17, hrv: 42),
HrvDataPoint(hour: 18, hrv: 38),
];
final List<HrvAnnotation> hrvAnnotations = const [
HrvAnnotation(
hour: 11,
hrv: 80,
stateLabel: '状态优秀',
detail: 'HRV 23ms · 11:28',
),
];
// ── 每日行动 ──────────────────────────────
final List<DailyActionItem> dailyActions = const [
DailyActionItem(
label: '睡眠',
value: '7',
unit: 'h',
subValue: '32',
subUnit: 'min',
),
DailyActionItem(
label: '健身',
value: '45',
unit: 'min',
),
DailyActionItem(
label: '步数',
value: '8,234',
unit: '步',
),
];
}