Flutter 框架跨平台鸿蒙开发 - 虚拟植物养成日记应用
摘要: 虚拟植物养成日记是一款基于Flutter开发的跨平台应用,用户可通过记录心情、步数和天气数据来培育个性化虚拟植物。应用包含四大功能模块:植物养成(根据用户数据动态计算植物生长状态)、成长日记(记录每日数据)、数据统计(可视化展示成长历程)和关于信息。采用Material Design 3设计规范,支持6种植物类型、6个成长阶段、6种心情和4类天气的交互影响,通过状态管理和动画控制器实现动态
欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图




1.1 应用简介
虚拟植物养成日记是一款创意娱乐应用,在手机里养一棵虚拟植物,根据你每天的心情、步数、天气来决定植物的生长状态,植物也会"感受"你的生活。应用通过有趣的养成机制,让用户在日常生活中关注自己的健康和情绪,与虚拟植物共同成长。
应用以清新的绿色为主色调,象征生命与希望。涵盖植物养成、成长日记、数据统计、关于信息四大模块。用户可以种植植物、记录日记、查看统计、与植物互动,体验虚拟养成带来的乐趣。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 植物养成 | 种植和培养虚拟植物 | 模型展示 |
| 心情影响 | 心情决定植物生长 | 效果系数 |
| 步数联动 | 运动步数促进生长 | 数据统计 |
| 天气影响 | 天气影响植物状态 | 效果系数 |
| 成长日记 | 记录每日心情步数 | 列表存储 |
| 数据统计 | 展示成长数据 | 图表展示 |
1.3 植物类型定义
| 序号 | 类型名称 | Emoji | 描述 |
|---|---|---|---|
| 1 | 花朵 | 🌸 | 娇艳欲滴的花朵 |
| 2 | 小树 | 🌳 | 茁壮成长的小树 |
| 3 | 多肉 | 🌵 | 可爱呆萌的多肉 |
| 4 | 香草 | 🌿 | 清新怡人的香草 |
| 5 | 盆栽 | 🪴 | 精致典雅的盆栽 |
| 6 | 果树 | 🍎 | 硕果累累的果树 |
1.4 成长阶段定义
| 序号 | 阶段名称 | Emoji | 进度 | 天数 |
|---|---|---|---|---|
| 1 | 种子 | 🌱 | 0% | 0天 |
| 2 | 发芽 | 🌿 | 20% | 3天 |
| 3 | 幼苗 | ☘️ | 40% | 7天 |
| 4 | 成长 | 🪴 | 60% | 14天 |
| 5 | 成熟 | 🌳 | 80% | 21天 |
| 6 | 茂盛 | 🌸 | 100% | 30天 |
1.5 心情类型定义
| 序号 | 心情名称 | Emoji | 颜色 | 效果系数 |
|---|---|---|---|---|
| 1 | 开心 | 😊 | #FFEB3B | 1.2 |
| 2 | 平静 | 😌 | #81C784 | 1.0 |
| 3 | 难过 | 😢 | #90CAF9 | 0.8 |
| 4 | 兴奋 | 🤩 | #FF7043 | 1.3 |
| 5 | 疲惫 | 😴 | #B39DDB | 0.7 |
| 6 | 焦虑 | 😰 | #EF9A9A | 0.6 |
1.6 天气类型定义
| 序号 | 天气名称 | Emoji | 效果系数 |
|---|---|---|---|
| 1 | 晴天 | ☀️ | 1.2 |
| 2 | 多云 | ⛅ | 1.0 |
| 3 | 雨天 | 🌧️ | 0.8 |
| 4 | 雪天 | ❄️ | 0.6 |
1.7 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| 动画效果 | AnimationController | - |
| 状态管理 | StatefulWidget | - |
| 目标平台 | 鸿蒙OS / Web | API 21+ |
1.8 项目结构
lib/
└── main_virtual_plant_diary.dart
├── VirtualPlantDiaryApp # 应用入口
├── PlantType # 植物类型枚举
├── GrowthStage # 成长阶段枚举
├── MoodType # 心情类型枚举
├── WeatherType # 天气类型枚举
├── PlantHealth # 植物健康枚举
├── Plant # 植物模型
├── DiaryEntry # 日记模型
├── VirtualPlantDiaryHomePage # 主页面(底部导航)
├── _buildPlantPage # 植物页面
├── _buildDiaryPage # 日记页面
├── _buildStatsPage # 统计页面
└── _buildProfilePage # 关于页面
二、系统架构
2.1 整体架构图
2.2 类图设计
2.3 页面导航流程
2.4 成长计算流程
三、核心模块设计
3.1 数据模型设计
3.1.1 植物类型枚举 (PlantType)
enum PlantType {
flower(label: '花朵', emoji: '🌸', description: '娇艳欲滴的花朵'),
tree(label: '小树', emoji: '🌳', description: '茁壮成长的小树'),
succulent(label: '多肉', emoji: '🌵', description: '可爱呆萌的多肉'),
herb(label: '香草', emoji: '🌿', description: '清新怡人的香草'),
bonsai(label: '盆栽', emoji: '🪴', description: '精致典雅的盆栽'),
fruit(label: '果树', emoji: '🍎', description: '硕果累累的果树');
final String label;
final String emoji;
final String description;
}
3.1.2 成长阶段枚举 (GrowthStage)
enum GrowthStage {
seed(label: '种子', emoji: '🌱', progress: 0.0, days: 0),
sprout(label: '发芽', emoji: '🌿', progress: 0.2, days: 3),
seedling(label: '幼苗', emoji: '☘️', progress: 0.4, days: 7),
growing(label: '成长', emoji: '🪴', progress: 0.6, days: 14),
mature(label: '成熟', emoji: '🌳', progress: 0.8, days: 21),
flourishing(label: '茂盛', emoji: '🌸', progress: 1.0, days: 30);
final String label;
final String emoji;
final double progress;
final int days;
}
3.1.3 心情类型枚举 (MoodType)
enum MoodType {
happy(label: '开心', emoji: '😊', color: Color(0xFFFFEB3B), effect: 1.2),
calm(label: '平静', emoji: '😌', color: Color(0xFF81C784), effect: 1.0),
sad(label: '难过', emoji: '😢', color: Color(0xFF90CAF9), effect: 0.8),
excited(label: '兴奋', emoji: '🤩', color: Color(0xFFFF7043), effect: 1.3),
tired(label: '疲惫', emoji: '😴', color: Color(0xFFB39DDB), effect: 0.7),
anxious(label: '焦虑', emoji: '😰', color: Color(0xFFEF9A9A), effect: 0.6);
final String label;
final String emoji;
final Color color;
final double effect;
}
3.1.4 植物模型 (Plant)
class Plant {
final String id; // 植物ID
final String name; // 植物名称
final PlantType type; // 植物类型
final GrowthStage stage; // 成长阶段
final PlantHealth health; // 健康状态
final double growth; // 成长值(0-1)
final double happiness; // 心情值(0-1)
final double hydration; // 水分值(0-1)
final DateTime createdAt; // 创建时间
final int totalDays; // 总天数
final int steps; // 总步数
final MoodType? lastMood; // 心情
final WeatherType? lastWeather; // 天气
}
3.1.5 日记模型 (DiaryEntry)
class DiaryEntry {
final String id; // 日记ID
final DateTime date; // 日期
final MoodType mood; // 心情
final WeatherType weather; // 天气
final int steps; // 步数
final String? note; // 备注
final double growthChange; // 成长变化
}
3.2 页面结构设计
3.2.1 主页面布局
3.2.2 植物页结构
3.2.3 日记页结构
3.3 成长计算逻辑
四、UI设计规范
4.1 配色方案
应用以清新的绿色为主色调,象征生命与希望:
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | #4CAF50 (Green) | 导航、主题元素 |
| 辅助色 | #81C784 | 日记页面 |
| 第三色 | #66BB6A | 统计页面 |
| 强调色 | #A5D6A7 | 关于页面 |
| 背景色 | #FAFAFA | 页面背景 |
| 卡片背景 | #FFFFFF | 植物卡片 |
4.2 心情颜色定义
| 心情 | 色值 | 视觉效果 |
|---|---|---|
| 开心 | #FFEB3B | 黄色明亮 |
| 平静 | #81C784 | 绿色宁静 |
| 难过 | #90CAF9 | 蓝色忧郁 |
| 兴奋 | #FF7043 | 橙色活力 |
| 疲惫 | #B39DDB | 紫色困倦 |
| 焦虑 | #EF9A9A | 红色焦虑 |
4.3 字体规范
| 元素 | 字号 | 字重 | 颜色 |
|---|---|---|---|
| 页面标题 | 24px | Bold | 主色 |
| 植物名称 | 24px | Bold | 白色 |
| 统计数字 | 20px | Bold | 主色 |
| 状态标签 | 12px | Regular | 灰色 |
| 进度数值 | 12px | Regular | 主色 |
4.4 组件规范
4.4.1 植物展示卡片
┌─────────────────────────────────────┐
│ │
│ 🌱 │
│ │
│ 小绿 │
│ 🌸 花朵 · 幼苗 │
│ │
└─────────────────────────────────────┘
4.4.2 状态卡片
┌─────────────────────────────────────┐
│ 成长35% 心情70% 水分60% │
│ │
│ [😊 健康良好] │
└─────────────────────────────────────┘
4.4.3 快捷操作按钮
┌─────────────────────────────────────┐
│ [💧 浇水] [✏️ 写日记] │
└─────────────────────────────────────┘
4.4.4 日记表单
┌─────────────────────────────────────┐
│ 记录今天 │
│ │
│ 今天的心情: │
│ [😊 开心] [😌 平静] [😢 难过] │
│ │
│ 今天天气: │
│ [☀️ 晴天] [⛅ 多云] [🌧️ 雨天] │
│ │
│ 写点什么... │
│ ┌─────────────────────────────┐ │
│ │ │ │
│ └─────────────────────────────┘ │
│ │
│ [💾 保存日记] │
└─────────────────────────────────────┘
五、核心功能实现
5.1 植物创建实现
void _createPlant(String name, PlantType type) {
setState(() {
_currentPlant = Plant(
id: 'plant_${DateTime.now().millisecondsSinceEpoch}',
name: name,
type: type,
);
});
}
5.2 日记记录实现
void _recordDiary() {
final growthEffect = _selectedMood.effect * _selectedWeather.effect * (_todaySteps / 10000);
final growthChange = growthEffect.clamp(0.01, 0.1);
setState(() {
_currentPlant = Plant(
// 更新植物状态
growth: (_currentPlant!.growth + growthChange).clamp(0.0, 1.0),
happiness: (_currentPlant!.happiness + _selectedMood.effect * 0.1).clamp(0.0, 1.0),
hydration: (_currentPlant!.hydration - 0.1).clamp(0.0, 1.0),
// ... 其他属性
);
});
}
5.3 浇水功能实现
void _waterPlant() {
setState(() {
_currentPlant = Plant(
// ... 其他属性
hydration: (_currentPlant!.hydration + 0.3).clamp(0.0, 1.0),
);
});
}
5.4 阶段计算实现
GrowthStage _getNewStage(double growth) {
if (growth >= 1.0) return GrowthStage.flourishing;
if (growth >= 0.8) return GrowthStage.mature;
if (growth >= 0.6) return GrowthStage.growing;
if (growth >= 0.4) return GrowthStage.seedling;
if (growth >= 0.2) return GrowthStage.sprout;
return GrowthStage.seed;
}
5.5 动画效果实现
void initState() {
_plantAnimationController = AnimationController(
duration: const Duration(seconds: 2),
vsync: this,
)..repeat(reverse: true);
_plantAnimation = Tween<double>(begin: 0.0, end: 0.05).animate(
CurvedAnimation(parent: _plantAnimationController, curve: Curves.easeInOut),
);
}
Widget _buildPlantDisplay() {
return AnimatedBuilder(
animation: _plantAnimation,
builder: (context, child) {
return Transform.rotate(
angle: _plantAnimation.value,
child: Text(_currentPlant!.stage.emoji),
);
},
);
}
六、交互设计
6.1 植物养成流程
6.2 日记记录流程
6.3 统计查看流程
七、扩展功能规划
7.1 后续版本规划
7.2 功能扩展建议
7.2.1 真实数据对接
数据功能:
- 运动健康API集成
- 天气API实时获取
- 位置信息获取
- 历史数据同步
7.2.2 社交功能
社交功能:
- 植物展览分享
- 社区互动
- 植物排行榜
- 互赠礼物
7.2.3 成就系统
成就功能:
- 连续打卡成就
- 植物进化成就
- 步数达人成就
- 心情记录成就
八、注意事项
8.1 开发注意事项
-
动画性能:植物动画需流畅自然
-
状态管理:植物状态需正确同步
-
数据计算:成长计算需合理设计
-
用户引导:新用户引导需清晰
-
数据持久化:日记数据需保存
8.2 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 动画卡顿 | 刷新频率高 | 优化动画 |
| 成长计算错误 | 系数问题 | 检查计算公式 |
| 阶段不更新 | 边界条件 | 检查阈值 |
| 浇水无效果 | 状态未更新 | 检查setState |
| 日记不保存 | 数据未保存 | 检查insert |
8.3 养成技巧
🌱 虚拟植物养成技巧 🌱
保持好心情
- 开心心情: 成长+20%
- 平静心情: 成长+0%
- 难过心情: 成长-20%
关注天气影响
- 晴天: 成长+20%
- 多云: 成长+0%
- 雨天: 成长-20%
- 雪天: 成长-40%
运动步数
- 步数越多,植物成长越快
- 建议每天保持5000步以上
养成建议
- 每天记录日记
- 保持好心情
- 适当浇水
- 多运动
九、运行说明
9.1 环境要求
| 环境 | 版本要求 |
|---|---|
| Flutter SDK | >= 3.0.0 |
| Dart SDK | >= 2.17.0 |
| 鸿蒙OS | API 21+ |
| Web浏览器 | Chrome 90+ |
9.2 运行命令
# 查看可用设备
flutter devices
# 运行到Web服务器
flutter run -d web-server -t lib/main_virtual_plant_diary.dart --web-port 8146
# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_virtual_plant_diary.dart
# 代码分析
flutter analyze lib/main_virtual_plant_diary.dart
十、总结
虚拟植物养成日记应用通过植物养成、成长日记、数据统计、关于信息四大模块,为用户提供了一个独特的虚拟养成体验平台。应用支持6种植物类型、6个成长阶段、6种心情类型、4种天气类型,让用户在日常生活中关注健康和情绪。
核心功能涵盖植物养成、心情影响、步数联动、天气影响、日记记录五大模块。植物类型从花朵到果树,满足不同用户偏好;成长阶段从种子到茂盛,记录植物成长全过程;心情和天气影响植物生长,增加养成趣味性。
应用采用 Material Design 3 设计规范,以清新的绿色为主色调,象征生命与希望。通过本应用,希望能够让用户在虚拟植物的陪伴下,保持好心情,多运动,养成健康的生活习惯。
虚拟植物养成日记——与植物共同成长
更多推荐



所有评论(0)