给未来的信应用


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

一、项目概述

运行效果图

image-20260408185647133

image-20260408185653397

image-20260408185700663

image-20260408185705011

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 到期推送机制

通知系统 后台服务 应用 用户 通知系统 后台服务 应用 用户 loop [每天检查] 写信并设置送达时间 注册定时任务 定期检查信件状态 检查是否有信件到期 信件到期,发送通知 推送通知 打开应用查看信件 展示已送达的信件

五、界面设计

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 数据安全建议

🔒 数据安全建议 🔒

  1. 设置密码 - 为应用设置密码保护
  2. 定期备份 - 定期备份信件数据
  3. 谨慎分享 - 不要轻易分享信件内容
  4. 隐私保护 - 注意保护个人隐私信息
  5. 安全环境 - 在安全的环境下写信

十二、总结

给未来的信应用通过"写信给未来的自己,到期推送"的核心理念,为用户创造了一个独特的时空对话机会。应用涵盖写信功能、时间胶囊、信件管理、到期推送、时间线、统计分析六大核心功能,让用户能够与未来的自己进行心灵对话。

应用采用紫色主题,营造神秘、梦幻的氛围。主页面清晰展示待收到和已收到的信件数量,信件列表按状态筛选展示,时间线页面以左右交错的方式展示所有信件的时间轴,统计页面展示写信总数、已收到数量、待收到数量等数据。

写信功能支持选择心情emoji、设置送达时间(1年/3年/5年/10年/自定义)、填写标题和内容。信件创建后会自动计算送达时间,并在到期后自动"送达",让用户收到来自过去的珍贵礼物。

应用采用Material Design 3设计规范,遵循Flutter最佳实践,代码结构清晰,易于维护和扩展。后续版本计划增加图片附件、语音信件、视频信件、公开信件、社区分享等功能,为用户提供更丰富的表达方式。

通过给未来的信应用,用户可以更好地认识自己、规划未来、记录成长,在时光的流逝中见证自己的变化和成长。

写信给未来的自己,与时光对话 💌


Logo

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

更多推荐