Flutter 框架跨平台鸿蒙开发 - 给未来的信
给未来的信应用
欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图




1.1 应用简介
给未来的信是一款独特的时间胶囊应用,核心理念是"写信给未来的自己,到期推送"。用户可以给1年、3年、5年甚至10年后的自己写信,记录当下的心情、梦想、目标或感悟,等到指定时间到达后,信件会自动"送达",让未来的自己收到来自过去的珍贵礼物。
在这个快节奏的时代,我们常常忘记停下来思考。给未来的信应用创造了一个独特的时空对话机会,让用户能够与未来的自己进行心灵对话。通过写信,用户可以更好地认识自己、规划未来、记录成长;通过读信,用户可以回顾过去、反思成长、感受时光的流逝。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 写信功能 | 给未来的自己写信 | 文本编辑器+时间选择 |
| 时间胶囊 | 设置信件送达时间 | 1年/3年/5年/10年/自定义 |
| 信件管理 | 管理待收到和已收到的信 | 列表展示+状态筛选 |
| 到期推送 | 信件到期后推送提醒 | 本地通知+定时检查 |
| 时间线 | 按时间轴展示所有信件 | 时间轴可视化 |
| 统计分析 | 统计写信数据 | 数据聚合+图表展示 |
1.3 时间胶囊选项
| 选项 | 描述 | 适用场景 |
|---|---|---|
| 1年后 | 短期目标和期望 | 年度目标、短期计划 |
| 3年后 | 中期规划和愿景 | 学业规划、职业发展 |
| 5年后 | 长期目标和梦想 | 人生规划、重大目标 |
| 10年后 | 远大理想和人生方向 | 人生理想、价值观 |
| 自定义 | 自由选择送达时间 | 特殊纪念日、生日 |
1.4 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| 状态管理 | setState | - |
| 动画控制 | AnimationController | - |
| 本地存储 | SharedPreferences | - |
| 本地通知 | flutter_local_notifications | - |
| 目标平台 | 鸿蒙OS / Web | API 21+ |
二、项目结构
lib/
├── main_future_letter.dart # 应用主入口
│ ├── FutureLetterApp # 根应用组件
│ ├── LetterStatus # 信件状态枚举
│ ├── TimeCapsule # 时间胶囊枚举
│ ├── Letter # 信件模型
│ └── FutureLetterHomePage # 主页面
三、数据模型
3.1 LetterStatus 枚举
enum LetterStatus {
pending('待收到', '📬'),
delivered('已收到', '💌'),
draft('草稿', '📝');
final String label;
final String emoji;
}
3.2 TimeCapsule 枚举
enum TimeCapsule {
oneYear('1年后', 1),
threeYears('3年后', 3),
fiveYears('5年后', 5),
tenYears('10年后', 10),
custom('自定义', 0);
final String label;
final int years;
}
3.3 Letter 模型
class Letter {
final String id; // 信件唯一标识
String title; // 信件标题
String content; // 信件内容
DateTime createdAt; // 创建时间
DateTime deliverAt; // 送达时间
LetterStatus status; // 信件状态
String? mood; // 心情emoji
List<String>? tags; // 标签列表
bool isFavorite; // 是否收藏
bool isRead; // 是否已读
Duration get remainingTime => deliverAt.difference(DateTime.now());
bool get isDelivered => DateTime.now().isAfter(deliverAt);
int get daysRemaining => remainingTime.inDays;
}
四、核心功能实现
4.1 写信流程
4.2 信件创建实现
void _createLetter(TimeCapsule capsule, String mood) {
final now = DateTime.now();
final deliverAt = now.add(Duration(days: capsule.years * 365));
final letter = Letter(
id: now.millisecondsSinceEpoch.toString(),
title: _titleController.text.trim(),
content: _contentController.text.trim(),
createdAt: now,
deliverAt: deliverAt,
mood: mood,
);
setState(() {
_letters.insert(0, letter);
});
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('💌 信件已寄出,将在${capsule.label}送达'),
backgroundColor: Colors.purple.shade700,
),
);
}
4.3 信件状态判断
Duration get remainingTime => deliverAt.difference(DateTime.now());
bool get isDelivered => DateTime.now().isAfter(deliverAt);
int get daysRemaining => remainingTime.inDays;
4.4 时间线展示
Widget _buildTimelineItem(Letter letter, int index) {
final isLeft = index % 2 == 0;
return Row(
children: [
if (isLeft) ...[
Expanded(child: _buildTimelineCard(letter)),
const SizedBox(width: 16),
_buildTimelineDot(letter),
const SizedBox(width: 16),
Expanded(child: Container()),
] else ...[
Expanded(child: Container()),
const SizedBox(width: 16),
_buildTimelineDot(letter),
const SizedBox(width: 16),
Expanded(child: _buildTimelineCard(letter)),
],
],
);
}
4.5 到期推送机制
五、界面设计
5.1 主页面布局
┌─────────────────────────────────────┐
│ 💌 给未来的信 │
│ 写给未来的自己 │
│ ┌──────────┐ ┌──────────┐ │
│ │📬 待收到 │ │💌 已收到 │ │
│ │ 2 │ │ 1 │ │
│ └──────────┘ └──────────┘ │
├─────────────────────────────────────┤
│ [📬 待收到] [💌 已收到] [📝 草稿] │
├─────────────────────────────────────┤
│ ┌─────────────────────────────┐ │
│ │ 📬 给一年后的自己 😊 │ │
│ │ 已送达 │ │
│ │ ───────────────────────── │ │
│ │ 亲爱的未来的我,当你读到... │ │
│ │ │ │
│ │ 📅 写信:2023年1月1日 │ │
│ │ ⏰ 送达:2024年1月1日 │ │
│ │ #成长 #鼓励 │ │
│ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ 📬 五年规划 🎯 │ │
│ │ 还有 1095 天送达 │ │
│ │ ───────────────────────── │ │
│ │ 五年后的我,这是五年前... │ │
│ │ │ │
│ │ 📅 写信:2022年1月1日 │ │
│ │ ⏰ 送达:2027年1月1日 │ │
│ │ #目标 #规划 │ │
│ └─────────────────────────────┘ │
│ │
│ [写信] │
└─────────────────────────────────────┘
5.2 写信界面
┌─────────────────────────────────────┐
│ ──── │
│ │
│ ✏️ 写信给未来的自己 │
│ │
│ 心情 │
│ [😊] [🎯] [💪] [🤔] [😢] [🎉] │
│ │
│ 送达时间 │
│ [1年后] [3年后] [5年后] │
│ [10年后] [自定义] │
│ │
│ 信件标题 │
│ ┌─────────────────────────────┐ │
│ │ 给未来的信 │ │
│ └─────────────────────────────┘ │
│ │
│ 信件内容 │
│ ┌─────────────────────────────┐ │
│ │ 写下你想对未来的自己说的话...│ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ 寄出信件 │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
5.3 时间线页面
┌─────────────────────────────────────┐
│ 时间线 3封信 │
├─────────────────────────────────────┤
│ │
│ ┌───────────┐ 📬 │
│ │ 给一年后的│ │
│ │ 自己 │ │
│ │ 2024年1月 │ │
│ │ 已送达 │ │
│ └───────────┘ │
│ │
│ 📬 ┌───────────┐ │
│ │ 五年规划 │ │
│ │ 2027年1月 │ │
│ │ 1095天后 │ │
│ └───────────┘ │
│ │
│ ┌───────────┐ 📬 │
│ │ 给迷茫时的│ │
│ │ 自己 │ │
│ │ 2025年1月 │ │
│ │ 335天后 │ │
│ └───────────┘ │
│ │
└─────────────────────────────────────┘
5.4 统计页面
┌─────────────────────────────────────┐
│ 统计 │
├─────────────────────────────────────┤
│ ┌─────────────────────────────┐ │
│ │ 写信总数 │ │
│ │ 3 │ │
│ │ 封信 │ │
│ └─────────────────────────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │💌 已收到 │ │📬 待收到 │ │
│ │ 1 │ │ 2 │ │
│ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │📝 总字数 │ │⭐ 收藏 │ │
│ │ 456 │ │ 1 │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────┘
六、动画效果
6.1 页面渐入动画
_fadeController = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 600),
);
FadeTransition(
opacity: _fadeController,
child: _buildPageContent(),
)
6.2 信件卡片动画
AnimatedContainer(
duration: const Duration(milliseconds: 300),
decoration: BoxDecoration(
color: isSelected ? Colors.purple.shade100 : Colors.white,
),
)
七、运行与调试
7.1 运行命令
# 运行到鸿蒙设备
flutter run -d harmony lib/main_future_letter.dart
# 运行到Web服务器
flutter run -d web-server -t lib/main_future_letter.dart --web-port 8123
# 运行到Windows
flutter run -d windows -t lib/main_future_letter.dart
# 代码分析
flutter analyze lib/main_future_letter.dart
7.2 功能测试清单
| 测试项 | 测试内容 | 预期结果 |
|---|---|---|
| 写信功能 | 创建新信件 | 信件保存成功 |
| 时间选择 | 选择不同送达时间 | 时间正确计算 |
| 信件列表 | 查看待收到/已收到信件 | 正确筛选展示 |
| 时间线 | 查看时间轴展示 | 按时间排序 |
| 统计功能 | 查看统计数据 | 数据准确无误 |
| 收藏功能 | 收藏/取消收藏信件 | 状态正确更新 |
八、扩展方向
8.1 后端集成
┌─────────────┐ HTTPS ┌─────────────┐
│ 客户端 │ ←─────────────→ │ 服务器 │
└─────────────┘ └─────────────┘
│ │
│ 信件数据同步 │
│ 用户认证 │
│ 推送通知 │
│ 云端备份 │
↓ ↓
┌─────────────┐ ┌─────────────┐
│ 本地存储 │ │ 云端数据库 │
└─────────────┘ └─────────────┘
8.2 功能扩展计划
| 版本 | 功能 | 描述 |
|---|---|---|
| v1.1 | 图片附件 | 信件中添加照片 |
| v1.2 | 语音信件 | 录制语音信件 |
| v1.3 | 视频信件 | 录制视频信件 |
| v1.4 | 公开信件 | 选择性公开信件 |
| v1.5 | 社区分享 | 分享信件到社区 |
8.3 高级功能
九、使用场景
9.1 典型使用场景
💌 给未来的信使用场景 💌
| 场景 | 描述 | 时间选择 |
|---|---|---|
| 年度目标 | 记录新年目标和期望 | 1年后 |
| 学业规划 | 规划学习目标和计划 | 3-5年后 |
| 职业发展 | 记录职业规划和梦想 | 5年后 |
| 人生理想 | 写下人生理想和价值观 | 10年后 |
| 特殊纪念 | 在特殊日子给自己写信 | 自定义 |
| 情感寄托 | 记录当下的心情和感悟 | 1-3年后 |
9.2 写信建议
┌─────────────────────────────────────────────────────────┐
│ 写信建议 │
├─────────────────────────────────────────────────────────┤
│ │
│ 📝 内容建议 │
│ • 当下的心情和状态 │
│ • 对未来的期望和目标 │
│ • 想对未来的自己说的话 │
│ • 现在的困惑和思考 │
│ • 重要的人和事 │
│ │
│ 💭 思考问题 │
│ • 我现在最在意什么? │
│ • 我希望未来的我是什么样子? │
│ • 我想对未来的自己说什么? │
│ • 有什么遗憾或未完成的事? │
│ │
│ ⏰ 时间选择 │
│ • 1年:短期目标和期望 │
│ • 3年:中期规划和愿景 │
│ • 5年:长期目标和梦想 │
│ • 10年:人生理想和方向 │
│ │
└─────────────────────────────────────────────────────────┘
十、心理学意义
10.1 与未来对话的意义
| 方面 | 说明 | 好处 |
|---|---|---|
| 自我认知 | 通过写信认识自己 | 提升自我意识 |
| 目标设定 | 明确未来目标 | 增强动力 |
| 情感表达 | 表达内心感受 | 情感宣泄 |
| 时间感知 | 感受时间流逝 | 珍惜当下 |
| 成长记录 | 记录成长轨迹 | 见证变化 |
10.2 心理学研究
🧠 心理学研究支持 🧠
研究表明,给未来的自己写信可以:
- 提升自我认知 - 通过反思认识真实的自己
- 增强目标感 - 明确目标,增强实现动力
- 改善情绪 - 表达情感,缓解压力
- 促进成长 - 记录成长,见证变化
- 增强意义感 - 赋予生活更多意义
十一、数据安全
11.1 隐私保护
| 措施 | 说明 |
|---|---|
| 本地加密 | 信件内容加密存储 |
| 密码保护 | 应用密码锁定 |
| 数据备份 | 加密云端备份 |
| 隐私模式 | 隐藏敏感信件 |
11.2 数据安全建议
🔒 数据安全建议 🔒
- 设置密码 - 为应用设置密码保护
- 定期备份 - 定期备份信件数据
- 谨慎分享 - 不要轻易分享信件内容
- 隐私保护 - 注意保护个人隐私信息
- 安全环境 - 在安全的环境下写信
十二、总结
给未来的信应用通过"写信给未来的自己,到期推送"的核心理念,为用户创造了一个独特的时空对话机会。应用涵盖写信功能、时间胶囊、信件管理、到期推送、时间线、统计分析六大核心功能,让用户能够与未来的自己进行心灵对话。
应用采用紫色主题,营造神秘、梦幻的氛围。主页面清晰展示待收到和已收到的信件数量,信件列表按状态筛选展示,时间线页面以左右交错的方式展示所有信件的时间轴,统计页面展示写信总数、已收到数量、待收到数量等数据。
写信功能支持选择心情emoji、设置送达时间(1年/3年/5年/10年/自定义)、填写标题和内容。信件创建后会自动计算送达时间,并在到期后自动"送达",让用户收到来自过去的珍贵礼物。
应用采用Material Design 3设计规范,遵循Flutter最佳实践,代码结构清晰,易于维护和扩展。后续版本计划增加图片附件、语音信件、视频信件、公开信件、社区分享等功能,为用户提供更丰富的表达方式。
通过给未来的信应用,用户可以更好地认识自己、规划未来、记录成长,在时光的流逝中见证自己的变化和成长。
写信给未来的自己,与时光对话 💌
更多推荐


所有评论(0)