sleep_controller.dart
1.27 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
import 'package:get/get.dart';
import 'trend_period_controller.dart';
/// 睡眠报告 专属 Controller
class SleepController extends TrendPeriodController {
// ── 响应式数据源 ──────────────────────────────────────
final averageSleep = '0.0'.obs;
final deepSleepRatio = '0'.obs;
final chartData = <double>[].obs;
final chartLabels = <String>[].obs;
@override
void loadData() {
isLoading.value = true;
// 模拟 API 延迟加载
Future.delayed(const Duration(milliseconds: 300), () {
final offset = dateOffset.value;
// 依据时间范围偏移动态渲染不同数据,模拟真实 API 拉取效果
final avg = (7.2 + offset * 0.15).clamp(4.0, 10.0);
averageSleep.value = avg.toStringAsFixed(1);
deepSleepRatio.value = '${(28 + offset).clamp(10, 50)}';
chartData.value = [
6.5 + offset * 0.1,
7.0 - offset * 0.2,
8.2 + offset * 0.3,
6.8 - offset * 0.1,
7.5 + offset * 0.2,
9.0 + offset * 0.4,
7.2 - offset * 0.3,
].map((e) => e.clamp(4.0, 10.0)).toList();
chartLabels.value = ['一', '二', '三', '四', '五', '六', '日'];
isLoading.value = false;
});
}
}