睡眠质量改善应用


欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net

一、项目概述

运行效果图

image-20260409190658132

image-20260409190702471

image-20260409190706555

image-20260409190710360

image-20260409190714861

1.1 应用简介

睡眠质量改善是一款健康管理类应用,核心理念是"个性化方案帮你睡个好觉"。通过睡眠监测、环境分析、白噪音、睡前放松四大核心模块,为用户提供全方位的睡眠改善方案,帮助用户建立健康的睡眠习惯。

睡眠是人体最重要的生理活动之一,良好的睡眠质量直接影响着白天的精神状态和工作效率。本应用基于睡眠科学原理,结合用户的实际睡眠数据,提供个性化的改善建议,让每一位用户都能找到适合自己的睡眠优化方案。

1.2 核心功能

功能模块 功能描述 实现方式
睡眠监测 记录睡眠时间和质量 时间选择 + 质量评分
环境分析 分析睡眠环境因素 温度/湿度/噪音/光线
白噪音 助眠音乐播放 6种白噪音类型
睡前放松 放松训练指导 呼吸/冥想/拉伸等
数据分析 睡眠数据统计 图表可视化
改善建议 个性化睡眠建议 数据驱动推荐

1.3 睡眠质量等级

序号 等级 Emoji 颜色 描述
1 较差 😴 #F44336 睡眠质量不佳,需要改善
2 一般 😐 #FF9800 睡眠质量一般,有提升空间
3 良好 😊 #8BC34A 睡眠质量较好,继续保持
4 优秀 😴 #4CAF50 睡眠质量极佳

1.4 白噪音类型

序号 类型 Emoji 颜色 适用场景
1 雨声 🌧️ #2196F3 助眠、放松
2 海浪 🌊 #00BCD4 冥想、减压
3 森林 🌲 #4CAF50 自然、宁静
4 篝火 🔥 #FF9800 温暖、舒适
5 风声 💨 #9E9E9E 轻柔、舒缓
6 夜晚 🌙 #3F51B5 深度睡眠

1.5 放松训练类型

序号 类型 Emoji 颜色 训练时长
1 深呼吸 🧘 #9C27B0 5-10分钟
2 冥想 🙏 #673AB7 10-20分钟
3 拉伸 🤸 #E91E63 5-15分钟
4 阅读 📖 #2196F3 15-30分钟
5 轻音乐 🎵 #00BCD4 20-60分钟

1.6 技术栈

技术领域 技术选型 版本要求
开发框架 Flutter >= 3.0.0
编程语言 Dart >= 2.17.0
设计规范 Material Design 3 -
状态管理 setState -
动画控制 AnimationController -
图表绘制 CustomPainter -
目标平台 鸿蒙OS / Web API 21+

二、项目结构

lib/
├── main_sleep_improvement.dart     # 应用主入口
│   ├── SleepImprovementApp         # 根应用组件
│   ├── SleepQuality                # 睡眠质量枚举
│   ├── WhiteNoiseType              # 白噪音类型枚举
│   ├── RelaxationType              # 放松类型枚举
│   ├── SleepRecord                 # 睡眠记录模型
│   ├── SleepImprovementHomePage    # 主页面
│   ├── SleepWavePainter            # 睡眠波形绘制器
│   └── SleepChartPainter           # 睡眠图表绘制器

三、数据模型

3.1 SleepQuality 枚举

enum SleepQuality {
  poor('较差', '😴', Color(0xFFF44336)),
  fair('一般', '😐', Color(0xFFFF9800)),
  good('良好', '😊', Color(0xFF8BC34A)),
  excellent('优秀', '😴', Color(0xFF4CAF50));

  final String label;
  final String emoji;
  final Color color;
}

3.2 WhiteNoiseType 枚举

enum WhiteNoiseType {
  rain('雨声', '🌧️', Color(0xFF2196F3)),
  ocean('海浪', '🌊', Color(0xFF00BCD4)),
  forest('森林', '🌲', Color(0xFF4CAF50)),
  fire('篝火', '🔥', Color(0xFFFF9800)),
  wind('风声', '💨', Color(0xFF9E9E9E)),
  night('夜晚', '🌙', Color(0xFF3F51B5));

  final String label;
  final String emoji;
  final Color color;
}

3.3 RelaxationType 枚举

enum RelaxationType {
  breathing('深呼吸', '🧘', Color(0xFF9C27B0)),
  meditation('冥想', '🙏', Color(0xFF673AB7)),
  stretching('拉伸', '🤸', Color(0xFFE91E63)),
  reading('阅读', '📖', Color(0xFF2196F3)),
  music('轻音乐', '🎵', Color(0xFF00BCD4));

  final String label;
  final String emoji;
  final Color color;
}

3.4 SleepRecord 模型

class SleepRecord {
  final String id;                  // 唯一标识
  final DateTime date;              // 睡眠日期
  final DateTime bedTime;           // 入睡时间
  final DateTime wakeTime;          // 起床时间
  final int durationMinutes;        // 睡眠时长(分钟)
  final SleepQuality quality;       // 睡眠质量
  final String? note;               // 备注信息
  final List<String> factors;       // 影响因素
}

四、核心功能实现

4.1 睡眠记录保存

void _saveSleepRecord() {
  final now = DateTime.now();
  final bedDateTime = DateTime(
    now.year, now.month, now.day,
    _bedTime.hour, _bedTime.minute,
  );
  final wakeDateTime = DateTime(
    now.year, now.month, now.day + 1,
    _wakeTime.hour, _wakeTime.minute,
  );

  final duration = wakeDateTime.difference(bedDateTime).inMinutes;

  setState(() {
    _sleepRecords.insert(0, SleepRecord(
      id: DateTime.now().millisecondsSinceEpoch.toString(),
      date: now,
      bedTime: bedDateTime,
      wakeTime: wakeDateTime,
      durationMinutes: duration,
      quality: _selectedQuality,
      note: _noteController.text.isEmpty ? null : _noteController.text,
      factors: _selectedFactors.toList(),
    ));
  });
}

4.2 睡眠波形动画

class SleepWavePainter extends CustomPainter {
  final double animationValue;
  final double breathingValue;

  
  void paint(Canvas canvas, Size size) {
    final path = Path();
    final amplitude = 20.0 + breathingValue * 10;
    final phase = animationValue * 2 * pi;

    for (double x = 0; x <= size.width; x++) {
      final y = size.height / 2 +
          amplitude * sin((x / size.width * frequency * 2 * pi) + phase);
      if (x == 0) {
        path.moveTo(x, y);
      } else {
        path.lineTo(x, y);
      }
    }
    canvas.drawPath(path, paint);
  }
}

4.3 深呼吸训练

void _showBreathingExercise() {
  showDialog(
    context: context,
    builder: (context) => Dialog(
      child: AnimatedBuilder(
        animation: _breathingController,
        builder: (context, child) {
          final phase = _breathingController.value;
          String instruction;
          if (phase < 0.25) {
            instruction = '吸气...';
          } else if (phase < 0.5) {
            instruction = '屏住...';
          } else if (phase < 0.75) {
            instruction = '呼气...';
          } else {
            instruction = '放松...';
          }
          // 显示呼吸动画圆圈
        },
      ),
    ),
  );
}

4.4 睡眠数据统计

Widget _buildStatisticsCard() {
  final avgDuration = _sleepRecords.isEmpty
      ? 0.0
      : _sleepRecords.map((r) => r.durationMinutes).reduce((a, b) => a + b) /
          _sleepRecords.length;

  return Row(
    children: [
      _buildStatColumn('平均时长', '${avgDuration ~/ 60}h${(avgDuration % 60).toInt()}m'),
      _buildStatColumn('记录天数', '${_sleepRecords.length}天'),
      _buildStatColumn('最佳睡眠', '9h30m'),
      _buildStatColumn('目标达成', '85%'),
    ],
  );
}

五、界面设计

5.1 页面结构

页面 功能 设计要点
首页 睡眠概览和快速入口 深色主题 + 波形动画
监测 睡眠记录输入 时间选择 + 质量评分
白噪音 助眠音乐播放 网格卡片 + 播放控制
放松 睡前放松训练 列表卡片 + 引导动画
分析 睡眠数据分析 图表展示 + 改善建议

5.2 配色方案

元素 颜色值 用途
主色调 #3F51B5 品牌色、按钮
深色背景 #1A237E → #3949AB 页面背景渐变
白噪音色 各类型独立颜色 类型区分
放松色 各类型独立颜色 类型区分

5.3 交互设计

交互元素 实现方式 效果描述
波形动画 CustomPainter + AnimationController 呼吸节奏波形
时间选择 showTimePicker 系统时间选择器
质量评分 ChoiceChip 单选质量等级
影响因素 Wrap + GestureDetector 多选标签

六、动画效果

6.1 呼吸动画

_breathingController = AnimationController(
  vsync: this,
  duration: const Duration(seconds: 4),
)..repeat(reverse: true);  // 4秒循环呼吸

6.2 波形动画

_waveController = AnimationController(
  vsync: this,
  duration: const Duration(seconds: 3),
)..repeat();  // 持续波形动画

6.3 动画应用

动画类型 效果描述 应用场景
呼吸动画 圆圈缩放呼吸效果 深呼吸训练
波形动画 正弦波流动效果 首页装饰
渐变背景 多色渐变过渡 页面背景

七、运行与调试

7.1 运行命令

# 运行应用
flutter run -d harmonyos lib/main_sleep_improvement.dart

# 代码分析
flutter analyze lib/main_sleep_improvement.dart

# 构建HAP包
flutter build hap --target lib/main_sleep_improvement.dart

7.2 调试要点

调试项 检查内容 解决方案
时间计算 睡眠时长是否正确 验证时间差计算
动画性能 波形动画是否流畅 调整动画时长
数据存储 记录是否正确保存 检查列表操作

八、扩展方向

8.1 功能扩展

扩展功能 实现思路 技术要点
真实监测 穿戴设备数据同步 蓝牙/健康数据API
智能闹钟 睡眠周期唤醒 算法计算最佳唤醒时间
数据持久化 本地数据存储 SharedPreferences
云端同步 多设备数据同步 云存储服务
睡眠报告 详细睡眠分析报告 PDF生成

8.2 内容扩展

扩展项 优化方案 预期效果
更多白噪音 增加音效类型 更丰富的选择
冥想课程 系统化冥想训练 更专业的指导
社区功能 睡眠经验分享 用户互动

九、使用场景

9.1 睡眠障碍改善

长期睡眠质量不佳的用户可以通过本应用记录睡眠数据,分析影响因素,结合白噪音和放松训练,逐步改善睡眠质量。

9.2 作息调整

需要调整作息时间的用户可以通过睡眠监测和数据分析,了解自己的睡眠规律,制定合理的作息计划。

9.3 睡前放松

睡前使用白噪音和放松训练功能,帮助身心放松,更快进入深度睡眠状态。


十、总结

睡眠质量改善应用通过睡眠监测、环境分析、白噪音、睡前放松四大核心模块,为用户提供全方位的睡眠改善方案。应用采用Flutter框架开发,使用深色主题营造睡眠氛围,配合波形动画和呼吸动画增强视觉效果。

核心亮点包括:

  • 睡眠监测:记录入睡时间、起床时间、睡眠质量
  • 环境分析:温度、湿度、噪音、光线四维度分析
  • 白噪音:6种助眠音乐,支持定时播放
  • 睡前放松:深呼吸、冥想、拉伸等多种放松方式
  • 数据分析:睡眠时长图表、统计数据、改善建议
  • 个性化建议:基于数据驱动的睡眠改善方案

该应用为睡眠质量不佳的用户提供了一个科学的改善工具,通过数据记录和分析,帮助用户了解自己的睡眠状况,找到适合自己的改善方法,最终实现睡眠质量的提升。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐