sleep_controller.dart 1.27 KB
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;
    });
  }
}