Flutter 框架跨平台鸿蒙开发 - 冥想指导应用

冥想指导应用


欢迎加入开源鸿蒙跨平台社区:

https://openharmonycrossplatform.csdn.net

一、项目概述

运行效果图




1.1 应用简介

冥想指导应用是一款帮助用户进行正念冥想练习的身心健康工具。在快节奏的现代生活中,压力、焦虑、失眠等问题日益普遍,冥想作为一种古老的身心修炼方法,已被现代科学证实对身心健康有诸多益处。本应用整合了多种冥想类型,包括呼吸冥想、放松冥想、专注冥想、睡眠冥想等,配合引导式练习和呼吸训练,帮助用户建立持续的冥想习惯。

冥想的核心在于觉察与接纳。通过规律的冥想练习,可以培养对当下的觉知,减少对过去的执着和对未来的焦虑,从而获得内心的平静与力量。本应用通过清晰的引导语、舒缓的视觉设计和科学的练习时长,让冥想变得简单易行。

1.2 核心功能

功能模块 功能描述 实现方式
冥想课程 多种类型冥想课程 数据模型 + 详情页
呼吸练习 引导式呼吸训练 AnimationController + Timer
冥想播放 计时与引导播放 Timer + 进度指示
收藏功能 收藏喜欢的冥想 Set集合 + 状态管理
历史记录 记录冥想历史 List集合 + 时间戳
统计数据 冥想时长与连续天数 计算属性 + 数据聚合

1.3 冥想分类

分类 英文标识 图标 颜色 功效
呼吸冥想 breathing air 青色 平静内心、调节情绪
放松冥想 relaxation spa 绿色 释放紧张、深度放松
专注冥想 focus center_focus_strong 靛蓝色 提升专注、清晰思维
睡眠冥想 sleep nightlight_round 深紫色 改善睡眠、缓解失眠
减压冥想 stress self_improvement 橙色 缓解压力、减轻焦虑
晨间冥想 morning wb_sunny 琥珀色 开启活力、设定意图
感恩冥想 gratitude favorite 粉色 培养感恩、提升幸福
身体扫描 bodyScan accessibility_new 蓝绿色 觉察身体、释放紧张

1.4 技术栈

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

1.5 项目结构

复制代码
lib/
└── main_meditation_guide.dart
    ├── MeditationGuideApp        # 应用入口
    ├── MeditationCategory        # 冥想分类枚举
    ├── BreathingPhase            # 呼吸阶段枚举
    ├── MeditationSession         # 冥想课程模型
    ├── HomePage                  # 主页面
    │   ├── _buildHomePage()      # 首页
    │   ├── _buildMeditationPage() # 冥想列表页
    │   ├── _buildBreathingPage() # 呼吸练习页
    │   └── _buildProfilePage()   # 个人中心
    └── MeditationPlayerPage      # 冥想播放页面

二、系统架构

2.1 整体架构图

Business Logic
Presentation Layer
Data Layer
MeditationSession

冥想课程模型
MeditationCategory

分类枚举
BreathingPhase

呼吸阶段枚举
首页

今日冥想
冥想列表页
呼吸练习页
个人中心
冥想播放页
呼吸动画

_breathingController
冥想计时

_timer
收藏管理

_favorites
历史记录

_history

2.2 类图设计

manages
navigates
has
plays
contains
MeditationGuideApp
+Widget build()
HomePage
-int _currentIndex
-List<MeditationSession> _sessions
-Set<String> _favorites
-List<Map> _history
-int _totalMinutes
-int _streakDays
-AnimationController _breathingController
-BreathingPhase _currentPhase
-bool _isBreathing
+Widget build()
-void _startBreathingExercise()
-void _stopBreathingExercise()
-void _startMeditation()
MeditationSession
+String id
+String title
+String description
+MeditationCategory category
+int durationMinutes
+List<String> instructions
+int difficulty
+int plays
+double rating
MeditationPlayerPage
-AnimationController _controller
-int _currentStep
-int _remainingSeconds
-Timer _timer
-bool _isPlaying
-bool _isCompleted
+Widget build()
-void _startMeditation()
-void _completeMeditation()
<<enumeration>>
MeditationCategory
breathing
relaxation
focus
sleep
stress
morning
gratitude
bodyScan
+String categoryName
+IconData categoryIcon
+Color categoryColor
+String categoryDescription
<<enumeration>>
BreathingPhase
inhale
holdIn
exhale
holdOut
+String phaseName
+String phaseInstruction

2.3 数据流程图

选择课程
开始冥想
呼吸练习
收藏
用户操作
操作类型
加载课程详情
进入播放页面
启动呼吸动画
更新收藏状态
显示引导语
开始计时
动画循环
更新UI
完成记录
更新统计

2.4 呼吸练习流程

点击开始
4秒后
4秒后
6秒后
2秒后
循环8次
用户停止
用户停止
用户停止
用户停止
等待开始
吸气
屏息
呼气
等待
完成
停止


三、核心模块设计

3.1 数据模型设计

3.1.1 冥想课程模型 (MeditationSession)
dart 复制代码
class MeditationSession {
  final String id;                    // 唯一标识
  final String title;                 // 课程标题
  final String description;           // 课程描述
  final MeditationCategory category;  // 冥想分类
  final int durationMinutes;          // 时长(分钟)
  final List<String> instructions;    // 引导语列表
  final int difficulty;               // 难度等级(1-3)
  final int plays;                    // 播放次数
  final double rating;                // 评分
}
3.1.2 冥想分类枚举 (MeditationCategory)

18% 15% 15% 12% 12% 10% 10% 8% 冥想课程分布 呼吸冥想 放松冥想 专注冥想 睡眠冥想 减压冥想 晨间冥想 感恩冥想 身体扫描

分类 英文标识 图标 颜色 推荐时长
呼吸冥想 breathing air 青色 5-10分钟
放松冥想 relaxation spa 绿色 15-20分钟
专注冥想 focus center_focus_strong 靛蓝色 10-15分钟
睡眠冥想 sleep nightlight_round 深紫色 20-30分钟
减压冥想 stress self_improvement 橙色 10-15分钟
晨间冥想 morning wb_sunny 琥珀色 5-10分钟
感恩冥想 gratitude favorite 粉色 5-10分钟
身体扫描 bodyScan accessibility_new 蓝绿色 15-20分钟
3.1.3 呼吸阶段枚举 (BreathingPhase)
阶段 英文标识 时长 说明
吸气 inhale 4秒 慢慢吸气
屏息 holdIn 4秒 保持屏息
呼气 exhale 6秒 慢慢呼气
等待 holdOut 2秒 放松等待

3.2 页面结构设计

3.2.1 首页模块

首页 _buildHomePage
今日冥想卡片
冥想分类横向滚动
推荐冥想列表
统计信息
总时长/连续天数/冥想次数
8个分类卡片
课程卡片
收藏按钮

3.2.2 呼吸练习页面

呼吸练习页
呼吸动画圆
当前阶段文字
控制按钮
呼吸模式说明
缩放动画
渐变光晕
吸气/屏息/呼气/等待
循环计数
4-4-6-2模式

3.2.3 冥想播放页面

点击开始
点击暂停
点击继续
时间结束
显示完成界面
准备开始
播放中
暂停
完成

3.3 状态管理

3.3.1 核心状态变量
dart 复制代码
class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
  // 导航状态
  int _currentIndex = 0;
  
  // 数据状态
  final List<MeditationSession> _sessions = [];
  final Set<String> _favorites = {};
  final List<Map<String, dynamic>> _history = [];
  
  // 统计状态
  int _totalMinutes = 0;
  int _streakDays = 0;
  
  // 呼吸练习状态
  late AnimationController _breathingController;
  late Animation<double> _breathingAnimation;
  BreathingPhase _currentPhase = BreathingPhase.inhale;
  bool _isBreathing = false;
  int _breathingCycle = 0;
  Timer? _breathingTimer;
  
  // 呼吸模式配置
  final Map<String, int> _breathingPattern = {
    'inhale': 4,
    'holdIn': 4,
    'exhale': 6,
    'holdOut': 2,
  };
}
3.3.2 呼吸动画逻辑
dart 复制代码
void _runBreathingPhase() {
  if (!_isBreathing) return;

  int duration;
  switch (_currentPhase) {
    case BreathingPhase.inhale:
      duration = _breathingPattern['inhale']!;
      _breathingController.forward();  // 放大
      break;
    case BreathingPhase.exhale:
      duration = _breathingPattern['exhale']!;
      _breathingController.reverse();  // 缩小
      break;
    // ...
  }

  _breathingTimer = Timer(Duration(seconds: duration), () {
    // 切换到下一阶段
    setState(() {
      _currentPhase = _nextPhase;
      if (_currentPhase == BreathingPhase.inhale) {
        _breathingCycle++;
        if (_breathingCycle >= 8) {
          _stopBreathingExercise();
          return;
        }
      }
    });
    _runBreathingPhase();
  });
}

四、UI设计规范

4.1 配色方案

应用采用深色主题设计,营造宁静祥和的氛围:

颜色类型 色值 用途
主色 #9C27B0 (Purple) AppBar、按钮、强调元素
背景色 #1A1A2E 页面背景
卡片背景 #16213E 卡片、弹窗
文字主色 #FFFFFF 主要文字
文字次色 #B0BEC5 次要文字

分类专属颜色:

dart 复制代码
// 呼吸冥想 - 青色
Colors.cyan

// 放松冥想 - 绿色
Colors.green

// 专注冥想 - 靛蓝色
Colors.indigo

// 睡眠冥想 - 深紫色
Colors.deepPurple

// 减压冥想 - 橙色
Colors.orange

// 晨间冥想 - 琥珀色
Colors.amber

// 感恩冥想 - 粉色
Colors.pink

// 身体扫描 - 蓝绿色
Colors.teal

4.2 字体规范

元素 字号 字重 颜色
课程标题 22px Bold #FFFFFF
列表标题 16px Medium #FFFFFF
引导文字 15px Regular #B0BEC5
时间显示 32px Bold #FFFFFF
阶段文字 20px Bold #FFFFFF

4.3 组件规范

4.3.1 冥想课程卡片
复制代码
┌─────────────────────────────────────────────────┐
│ ┌────┐  晨间觉醒                        [❤️]   │
│ │ 🌅 │  晨间冥想 · 10分钟 · ⭐4.8              │
│ └────┘                                          │
└─────────────────────────────────────────────────┘
4.3.2 呼吸动画圆
复制代码
        ┌─────────────────┐
       ╱                   ╲
      │                     │
     │    ┌───────────┐    │
     │    │   吸气    │    │
     │    │  第2循环  │    │
     │    └───────────┘    │
      │                     │
       ╲                   ╱
        └─────────────────┘
4.3.3 冥想播放界面
复制代码
┌─────────────────────────────────────────────────┐
│                                                 │
│              晨间觉醒                           │
│                                                 │
│           ┌───────────────┐                    │
│           │               │                    │
│           │    08:30      │                    │
│           │               │                    │
│           └───────────────┘                    │
│                                                 │
│  ┌─────────────────────────────────────────┐   │
│  │ ① 找一个安静的地方坐下,保持背部挺直    │   │
│  │ ████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │   │
│  └─────────────────────────────────────────┘   │
│                                                 │
│              [ ▶️ 开始冥想 ]                    │
│                                                 │
└─────────────────────────────────────────────────┘

五、核心功能实现

5.1 呼吸动画

dart 复制代码
void _startBreathingExercise() {
  setState(() {
    _isBreathing = true;
    _breathingCycle = 0;
    _currentPhase = BreathingPhase.inhale;
  });
  _runBreathingPhase();
}

void _runBreathingPhase() {
  if (!_isBreathing) return;

  int duration;
  switch (_currentPhase) {
    case BreathingPhase.inhale:
      duration = _breathingPattern['inhale']!;
      _breathingController.duration = Duration(seconds: duration);
      _breathingController.forward();
      break;
    case BreathingPhase.exhale:
      duration = _breathingPattern['exhale']!;
      _breathingController.duration = Duration(seconds: duration);
      _breathingController.reverse();
      break;
    // ...
  }

  _breathingTimer = Timer(Duration(seconds: duration), () {
    // 切换阶段并继续
  });
}

5.2 冥想计时

dart 复制代码
void _startMeditation() {
  setState(() {
    _isPlaying = true;
  });
  _timer = Timer.periodic(const Duration(seconds: 1), (timer) {
    setState(() {
      if (_remainingSeconds > 0) {
        _remainingSeconds--;
        _updateStep();
      } else {
        _completeMeditation();
      }
    });
  });
}

void _updateStep() {
  final totalDuration = widget.session.durationMinutes * 60;
  final stepDuration = totalDuration / widget.session.instructions.length;
  final elapsed = totalDuration - _remainingSeconds;
  _currentStep = (elapsed / stepDuration).floor().clamp(
    0,
    widget.session.instructions.length - 1,
  );
}

5.3 完成记录

dart 复制代码
void _completeMeditation() {
  _timer?.cancel();
  setState(() {
    _isPlaying = false;
    _isCompleted = true;
  });
  widget.onComplete();  // 回调更新历史记录
}

5.4 收藏功能

dart 复制代码
void _toggleFavorite(String id) {
  setState(() {
    if (_favorites.contains(id)) {
      _favorites.remove(id);
    } else {
      _favorites.add(id);
    }
  });
}

六、预置冥想课程

6.1 课程列表

序号 标题 分类 时长 难度
1 晨间觉醒 晨间冥想 10分钟 ★☆☆
2 4-7-8呼吸法 呼吸冥想 5分钟 ★☆☆
3 深度睡眠引导 睡眠冥想 20分钟 ★☆☆
4 专注力提升 专注冥想 15分钟 ★★☆
5 压力释放 减压冥想 12分钟 ★★☆
6 身体扫描 身体扫描 15分钟 ★☆☆
7 感恩之心 感恩冥想 10分钟 ★☆☆
8 深度放松 放松冥想 18分钟 ★☆☆

6.2 引导语示例

晨间觉醒引导语:

  1. 找一个安静的地方坐下,保持背部挺直
  2. 闭上眼睛,深呼吸三次
  3. 想象阳光从头顶缓缓流入身体
  4. 感受身体的每一个细胞正在苏醒
  5. 设定今天的意图和目标
  6. 带着感恩的心迎接新的一天

七、冥想知识

7.1 冥想类型

冥想类型
正念冥想
呼吸觉察
身体扫描
想法观察
专注冥想
对象专注
曼陀罗冥想
烛光冥想
运动冥想
行禅
瑜伽
太极
慈心冥想
自我慈爱
他人慈爱
普世慈爱

7.2 呼吸技巧

技巧 模式 功效
4-7-8呼吸 吸4秒-屏7秒-呼8秒 快速放松、助眠
箱式呼吸 吸4秒-屏4秒-呼4秒-屏4秒 平衡情绪、提升专注
腹式呼吸 深吸气-慢呼气 缓解焦虑、降低血压
交替鼻孔呼吸 左右鼻孔交替 平衡左右脑、净化经络

7.3 冥想建议

开始冥想
选择安静环境
设定固定时间
从短时间开始
保持耐心
持续练习
注意事项
不要评判自己
思绪飘走是正常的
温和地拉回注意力


八、扩展功能规划

8.1 后续版本规划

2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 2024-02-25 2024-03-03 2024-03-10 2024-03-17 2024-03-24 冥想课程 呼吸练习 播放功能 音频播放 提醒功能 成就系统 社区功能 个性化推荐 数据同步 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 冥想指导应用开发计划

8.2 功能扩展建议

8.2.1 音频播放

集成冥想背景音乐:

  • 自然声音(雨声、海浪、鸟鸣)
  • 白噪音
  • 双耳节拍
  • 引导语音
8.2.2 提醒功能

定时冥想提醒:

  • 每日固定时间提醒
  • 自定义提醒频率
  • 智能推荐最佳时间
8.2.3 成就系统

激励持续练习:

  • 连续打卡徽章
  • 里程碑成就
  • 社区分享功能

九、注意事项

9.1 开发注意事项

  1. 动画性能:呼吸动画使用AnimationController优化性能

  2. Timer管理:及时取消Timer避免内存泄漏

  3. 状态同步:冥想完成后及时更新历史记录

  4. 深色主题:确保所有组件在深色背景下可读

9.2 常见问题

问题 原因 解决方案
动画不流畅 帧率过低 使用AnimatedBuilder
Timer未取消 页面退出未处理 在dispose中取消
状态不同步 未调用setState 在状态变更时调用setState

9.3 冥想提示

🧘 冥想小贴士 🧘

冥想不是要停止思考,而是觉察思考。

当思绪飘走时,温和地将注意力拉回即可。

持续的练习比单次长时间更重要。

每天5分钟,胜过每周一次30分钟。


十、运行说明

10.1 环境要求

环境 版本要求
Flutter SDK >= 3.0.0
Dart SDK >= 2.17.0
鸿蒙OS API 21+

10.2 运行命令

bash 复制代码
# 查看可用设备
flutter devices

# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_meditation_guide.dart

# 运行到Windows
flutter run -d windows -t lib/main_meditation_guide.dart

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

十一、总结

冥想指导应用通过丰富的冥想课程、引导式呼吸练习和科学的进度追踪,为用户提供了一个全面的正念冥想平台。应用采用深色主题设计,营造宁静祥和的氛围;呼吸动画流畅自然,引导用户进入放松状态;冥想播放功能支持暂停和继续,适应不同使用场景。

核心功能涵盖八大冥想类型,从晨间觉醒到深度睡眠,从压力释放到感恩培养,满足不同用户的需求。呼吸练习采用经典的4-4-6-2模式,配合视觉动画引导,让用户轻松掌握正确的呼吸节奏。

通过本应用,希望能够帮助更多人建立冥想习惯,在繁忙的生活中找到内心的平静与力量,实现身心健康的平衡发展。

静心冥想,觉察当下

相关推荐
互联网散修8 小时前
零基础鸿蒙应用开发第二十六节:泛型与商品容器的灵活适配
华为·harmonyos
王码码20358 小时前
Flutter 三方库 preact_signals 的鸿蒙化适配指南 - 掌控极致信号响应、Signals 架构实战、鸿蒙级精密状态指控专家
flutter·harmonyos·鸿蒙·openharmony·preact_signals
芙莉莲教你写代码10 小时前
Flutter 框架跨平台鸿蒙开发 - 密码管理器应用
服务器·flutter·华为·harmonyos
枫叶丹410 小时前
【HarmonyOS 6.0】ArkUI Swiper 组件:深入掌握滑动状态变化事件回调
开发语言·华为·harmonyos
纯爱掌门人11 小时前
鸿蒙日历服务实践:把应用里的事件写进用户的日程表
华为·harmonyos
HwJack2011 小时前
HarmonyOS开发中ArkTS @Extend装饰器:给组件“装外挂”,让样式复用不再将就
华为·harmonyos
阿桂有点桂11 小时前
Flutter打包的app增加签名
flutter
17(无规则自律)11 小时前
【华为机考真题】动态规划之遗迹探险家小红(含C++源码)
c++·华为·动态规划
Serene_Dream11 小时前
鸿蒙应用开发中的项目文件结构
华为