Flutter 框架跨平台鸿蒙开发 - 睡眠质量改善
·
睡眠质量改善应用
欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图





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种助眠音乐,支持定时播放
- 睡前放松:深呼吸、冥想、拉伸等多种放松方式
- 数据分析:睡眠时长图表、统计数据、改善建议
- 个性化建议:基于数据驱动的睡眠改善方案
该应用为睡眠质量不佳的用户提供了一个科学的改善工具,通过数据记录和分析,帮助用户了解自己的睡眠状况,找到适合自己的改善方法,最终实现睡眠质量的提升。
更多推荐


所有评论(0)