trend_controller.dart 973 Bytes
import 'package:get/get.dart';

import '../../../report_common/models/health_report_query.dart';

enum TrendType {
  hrv,
  activity,
  sleep;

  int get tabIndex => index;
}

/// 趋势页顶层 Controller,仅负责:
/// 顶层 HRV / 活动 / 睡眠 类型切换 (selectedTypeIndex)
class TrendController extends GetxController {
  // 第1层类型 Tab(0 = HRV, 1 = 活动, 2 = 睡眠)
  final selectedTypeIndex = 0.obs;

  // 当前查看的用户。null 表示查看自己;非 null 表示查看指定用户。
  final targetUserId = RxnInt();

  HealthReportQuery get query => HealthReportQuery(
        targetUserId: targetUserId.value,
      );

  void changeType(int index) {
    if (index == selectedTypeIndex.value) return;
    selectedTypeIndex.value = index;
  }

  void selectType(TrendType type) => changeType(type.tabIndex);

  void changeTargetUser(int? userId) {
    if (userId == targetUserId.value) return;
    targetUserId.value = userId;
  }
}