欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图



1.1 应用简介
生日纪念日提醒是一款贴心的生活管理应用,帮助用户记录和管理家人朋友的生日、重要纪念日等特殊日期,并提供提前提醒功能。应用不仅能在重要日子来临前发送提醒,还能根据关系、兴趣等因素推荐合适的礼物 ideas,让用户再也不会忘记重要日子。应用以温馨的粉色为主色调,象征关爱与温暖,涵盖日期管理、提醒设置、礼物推荐、个人中心四大模块。
用户可以添加各种类型的纪念日,设置提醒时间,添加详细信息和照片,应用会智能分析日期临近情况,提前发送提醒,并根据关系类型和对方兴趣推荐个性化的礼物建议。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 日期管理 | 生日、纪念日记录 | 本地数据库 |
| 智能提醒 | 提前提醒功能 | 系统通知 |
| 礼物推荐 | 个性化礼物建议 | 推荐算法 |
| 关系管理 | 联系人关系分类 | 标签系统 |
| 数据备份 | 云端备份恢复 | 云存储 |
| 统计分析 | 纪念日统计 | 数据可视化 |
1.3 纪念日类型定义
| 序号 | 类型名称 | Emoji | 描述 |
|---|---|---|---|
| 1 | 生日 | 🎂 | 个人生日 |
| 2 | 结婚纪念日 | 💍 | 结婚周年 |
| 3 | 相识纪念日 | 💕 | 相识/恋爱纪念日 |
| 4 | 毕业纪念日 | 🎓 | 毕业周年 |
| 5 | 入职纪念日 | 💼 | 工作周年 |
| 6 | 其他纪念日 | 📅 | 其他重要日期 |
1.4 提醒时间设置
| 序号 | 提醒时间 | Emoji | 提前天数 | 描述 |
|---|---|---|---|---|
| 1 | 当天 | ⏰ | 0 | 当天提醒 |
| 2 | 提前1天 | 1️⃣ | 1 | 提前一天提醒 |
| 3 | 提前3天 | 3️⃣ | 3 | 提前三天提醒 |
| 4 | 提前7天 | 7️⃣ | 7 | 提前一周提醒 |
| 5 | 提前14天 | 1️⃣4️⃣ | 14 | 提前两周提醒 |
| 6 | 自定义 | ⚙️ | 自定义 | 自定义提前天数 |
1.5 关系类型定义
| 序号 | 关系类型 | Emoji | 亲密度 | 描述 |
|---|---|---|---|---|
| 1 | 家人 | 👨👩👧👦 | 5 | 家庭成员 |
| 2 | 朋友 | 🤝 | 4 | 好朋友 |
| 3 | 同事 | 👥 | 3 | 工作同事 |
| 4 | 同学 | 🎓 | 3 | 同学关系 |
| 5 | 恋人 | 💑 | 5 | 恋爱关系 |
| 6 | 其他 | 👤 | 2 | 其他关系 |
1.6 礼物预算等级
| 序号 | 预算等级 | Emoji | 金额范围 | 描述 |
|---|---|---|---|---|
| 1 | 经济实惠 | 💰 | <¥100 | 小礼物 |
| 2 | 中等预算 | 💸 | ¥100-¥500 | 中等礼物 |
| 3 | 高端礼物 | 💎 | >¥500 | 贵重礼物 |
1.7 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 本地存储 | sqflite | >= 2.0.0 |
| 通知系统 | flutter_local_notifications | >= 10.0.0 |
| 日期处理 | intl | >= 0.17.0 |
| 云存储 | firebase_core | >= 2.0.0 |
| 设计规范 | Material Design 3 | - |
| 目标平台 | 鸿蒙OS / iOS / Android | API 21+ |
1.8 项目结构
lib/
└── main_birthday_anniversary_reminder.dart
├── BirthdayAnniversaryReminderApp # 应用入口
├── AnniversaryType # 纪念日类型枚举
├── ReminderTime # 提醒时间枚举
├── RelationshipType # 关系类型枚举
├── BudgetLevel # 礼物预算枚举
├── AnniversaryEvent # 纪念日事件模型
├── GiftIdea # 礼物建议模型
├── BirthdayAnniversaryHomePage # 主页面(底部导航)
├── _buildEventsPage # 事件页面
├── _buildRemindersPage # 提醒页面
├── _buildGiftsPage # 礼物页面
├── _buildProfilePage # 个人页面
├── AnniversaryCardWidget # 纪念日卡片组件
└── GiftRecommendationWidget # 礼物推荐组件
二、系统架构
2.1 整体架构图
Data Layer
Business Layer
Presentation Layer
主页面
BirthdayAnniversaryHomePage
事件页
提醒页
礼物页
个人页
事件列表
添加事件
事件详情
提醒设置
提醒列表
通知管理
礼物推荐
礼物收藏
礼物分类
个人设置
数据管理
关于应用
事件管理器
EventManager
提醒服务
ReminderService
礼物推荐器
GiftRecommender
数据同步器
DataSynchronizer
AnniversaryEvent
纪念日事件
GiftIdea
礼物建议
UserData
用户数据
SettingsData
设置数据
2.2 类图设计
has
has
has
has
BirthdayAnniversaryReminderApp
+Widget build()
<<enumeration>>
AnniversaryType
+String label
+String emoji
+String description
+birthday()
+wedding()
+meeting()
+graduation()
+work()
+other()
<<enumeration>>
ReminderTime
+String label
+String emoji
+int daysBefore
+sameDay()
+oneDay()
+threeDays()
+sevenDays()
+fourteenDays()
+custom()
<<enumeration>>
RelationshipType
+String label
+String emoji
+int intimacy
+family()
+friend()
+colleague()
+classmate()
+lover()
+other()
AnniversaryEvent
+String id
+String name
+DateTime date
+AnniversaryType type
+RelationshipType relationship
+ReminderTime reminderTime
+int customReminderDays
+String notes
+String photoPath
+DateTime createdAt
GiftIdea
+String id
+String title
+String description
+BudgetLevel budget
+List<String> categories
+String imageUrl
+double rating
BudgetLevel
2.3 页面导航流程
事件
提醒
礼物
我的
应用启动
事件页
底部导航
事件列表
提醒设置
礼物推荐
个人中心
添加事件
填写详情
设置提醒
保存事件
事件详情
编辑事件
提醒列表
设置提醒时间
礼物推荐
查看礼物详情
收藏礼物
个人设置
数据备份
2.4 提醒流程
系统通知 提醒服务 应用 用户 系统通知 提醒服务 应用 用户 添加纪念日事件 注册提醒 提醒已设置 检查日期 计算提前天数 触发提醒 显示通知 点击通知 显示事件详情 推荐礼物 显示详情和推荐
三、核心模块设计
3.1 数据模型设计
3.1.1 纪念日类型枚举 (AnniversaryType)
dart
enum AnniversaryType {
birthday(
label: '生日',
emoji: '🎂',
description: '个人生日',
color: Color(0xFFE91E63),
),
wedding(
label: '结婚纪念日',
emoji: '💍',
description: '结婚周年',
color: Color(0xFF9C27B0),
),
meeting(
label: '相识纪念日',
emoji: '💕',
description: '相识/恋爱纪念日',
color: Color(0xFFF44336),
),
graduation(
label: '毕业纪念日',
emoji: '🎓',
description: '毕业周年',
color: Color(0xFF4CAF50),
),
work(
label: '入职纪念日',
emoji: '💼',
description: '工作周年',
color: Color(0xFF2196F3),
),
other(
label: '其他纪念日',
emoji: '📅',
description: '其他重要日期',
color: Color(0xFF607D8B),
);
final String label;
final String emoji;
final String description;
final Color color;
}
3.1.2 提醒时间枚举 (ReminderTime)
dart
enum ReminderTime {
sameDay(label: '当天', emoji: '⏰', daysBefore: 0),
oneDay(label: '提前1天', emoji: '1️⃣', daysBefore: 1),
threeDays(label: '提前3天', emoji: '3️⃣', daysBefore: 3),
sevenDays(label: '提前7天', emoji: '7️⃣', daysBefore: 7),
fourteenDays(label: '提前14天', emoji: '1️⃣4️⃣', daysBefore: 14),
custom(label: '自定义', emoji: '⚙️', daysBefore: -1);
final String label;
final String emoji;
final int daysBefore;
}
3.1.3 纪念日事件模型 (AnniversaryEvent)
dart
class AnniversaryEvent {
final String id; // 事件ID
final String name; // 事件名称
final String personName; // 相关人员姓名
final DateTime date; // 日期
final AnniversaryType type; // 类型
final RelationshipType relationship; // 关系
final ReminderTime reminderTime; // 提醒时间
final int customReminderDays; // 自定义提醒天数
final String notes; // 备注
final String photoPath; // 照片路径
final DateTime createdAt; // 创建时间
final DateTime updatedAt; // 更新时间
}
3.1.4 礼物建议模型 (GiftIdea)
dart
class GiftIdea {
final String id; // 礼物ID
final String title; // 礼物名称
final String description; // 礼物描述
final BudgetLevel budget; // 预算等级
final List<String> categories; // 分类标签
final String imageUrl; // 图片URL
final double rating; // 评分
final int popularity; // 受欢迎度
}
3.1.5 纪念日类型分布
45% 15% 12% 10% 10% 8% 纪念日类型分布示例 生日 结婚纪念日 相识纪念日 毕业纪念日 入职纪念日 其他
3.2 页面结构设计
3.2.1 主页面布局
BirthdayAnniversaryHomePage
IndexedStack
事件页
提醒页
礼物页
个人页
NavigationBar
事件 Tab
提醒 Tab
礼物 Tab
我的 Tab
3.2.2 事件页结构
事件页
SliverAppBar
快速统计
近期事件
事件列表
添加按钮
总事件数
本月事件
即将到来
事件卡片
事件信息
剩余天数
提醒状态
分类筛选
全部
生日
纪念日
其他
3.2.3 提醒页结构
提醒页
SliverAppBar
提醒设置
提醒列表
通知权限
默认提醒时间
选择时间
提醒项
事件信息
提醒时间
操作按钮
权限状态
开启权限
3.2.4 礼物页结构
礼物页
SliverAppBar
礼物推荐
礼物分类
收藏礼物
推荐列表
礼物卡片
礼物信息
预算等级
收藏按钮
分类标签
按关系
按预算
按兴趣
收藏列表
礼物卡片
3.3 提醒系统设计
是
否
应用启动
初始化提醒服务
加载所有事件
计算提醒时间
设置系统通知
定时检查
是否到达提醒时间?
发送通知
用户点击通知
打开事件详情
推荐礼物
3.4 礼物推荐算法
获取事件信息
分析关系类型
分析兴趣爱好
分析预算等级
匹配礼物数据库
排序推荐结果
显示推荐礼物
四、UI设计规范
4.1 配色方案
应用以温馨的粉色为主色调,象征关爱与温暖:
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | #E91E63 (Pink) | 导航、主题元素 |
| 辅助色 | #F48FB1 | 事件页面 |
| 第三色 | #F8BBD0 | 提醒页面 |
| 强调色 | #FCE4EC | 礼物页面 |
| 背景色 | #FAFAFA | 页面背景 |
| 卡片背景 | #FFFFFF | 功能卡片 |
| 提醒背景 | #FFF3E0 | 提醒通知 |
4.2 纪念日类型颜色
| 类型 | 色值 | 视觉效果 |
|---|---|---|
| 生日 | #E91E63 | 浪漫粉色 |
| 结婚纪念日 | #9C27B0 | 优雅紫色 |
| 相识纪念日 | #F44336 | 热情红色 |
| 毕业纪念日 | #4CAF50 | 清新绿色 |
| 入职纪念日 | #2196F3 | 专业蓝色 |
| 其他纪念日 | #607D8B | 中性灰色 |
4.3 字体规范
| 元素 | 字号 | 字重 | 颜色 |
|---|---|---|---|
| 页面标题 | 24px | Bold | 主色 |
| 事件标题 | 18px | Bold | #000000 |
| 日期显示 | 14px | Medium | #666666 |
| 提醒时间 | 12px | Regular | #999999 |
| 礼物名称 | 16px | Bold | #000000 |
4.4 组件规范
4.4.1 事件卡片
┌─────────────────────────────────────┐
│ ┌──────┐ │
│ │ 🎂 │ 张三的生日 │
│ └──────┘ 2024年5月20日 │
│ 还有15天 │
│ 👨👩👧👦 家人 · ⏰ 提前3天提醒 │
│ [编辑] [删除] │
└─────────────────────────────────────┘
4.4.2 添加事件界面
┌─────────────────────────────────────┐
│ 添加纪念日 │
│ │
│ 事件类型: [🎂 生日 ▼] │
│ 姓名: [张三] │
│ 日期: [2024-05-20] │
│ 关系: [👨👩👧👦 家人 ▼] │
│ 提醒时间: [3️⃣ 提前3天 ▼] │
│ 备注: [喜欢巧克力蛋糕] │
│ │
│ [保存] [取消] │
└─────────────────────────────────────┘
4.4.3 提醒设置界面
┌─────────────────────────────────────┐
│ 提醒设置 │
│ │
│ 默认提醒时间 │
│ [⏰ 当天] [1️⃣ 提前1天] [3️⃣ 提前3天] │
│ [7️⃣ 提前7天] [1️⃣4️⃣ 提前14天] [⚙️ 自定义] │
│ │
│ 通知权限 │
│ [开启通知权限] │
│ │
│ 提醒音效 │
│ [默认音效 ▼] │
└─────────────────────────────────────┘
4.4.4 礼物推荐卡片
┌─────────────────────────────────────┐
│ ┌─────────────────────────────┐ │
│ │ │ │
│ │ 🎁 │ │
│ │ [礼物图片占位] │ │
│ │ │ │
│ └─────────────────────────────┘ │
│ 精致巧克力礼盒 │
│ 💸 中等预算 · ⭐ 4.8 │
│ 适合生日、情人节等场合 │
│ [收藏] [查看详情] │
└─────────────────────────────────────┘
4.4.5 统计界面
┌─────────────────────────────────────┐
│ 纪念日统计 │
│ │
│ ┌─────────────────────────────┐ │
│ │ [饼图:类型分布] │ │
│ └─────────────────────────────┘ │
│ 生日: 12个 结婚: 3个 其他: 5个 │
│ │
│ 本月事件: 2个 │
│ 下月事件: 3个 │
│ 总事件: 20个 │
└─────────────────────────────────────┘
五、核心功能实现
5.1 事件管理实现
dart
class EventManager {
final Database _database;
Future<void> addEvent(AnniversaryEvent event) async {
await _database.insert('events', {
'id': event.id,
'name': event.name,
'person_name': event.personName,
'date': event.date.millisecondsSinceEpoch,
'type': event.type.index,
'relationship': event.relationship.index,
'reminder_time': event.reminderTime.index,
'custom_reminder_days': event.customReminderDays,
'notes': event.notes,
'photo_path': event.photoPath,
'created_at': event.createdAt.millisecondsSinceEpoch,
'updated_at': event.updatedAt.millisecondsSinceEpoch,
});
await _scheduleReminder(event);
}
Future<List<AnniversaryEvent>> getUpcomingEvents(int days) async {
final now = DateTime.now();
final endDate = now.add(Duration(days: days));
final results = await _database.query(
'events',
where: 'date >= ? AND date <= ?',
whereArgs: [
now.millisecondsSinceEpoch,
endDate.millisecondsSinceEpoch,
],
orderBy: 'date ASC',
);
return results.map((map) => _fromMap(map)).toList();
}
}
5.2 提醒服务实现
dart
class ReminderService {
final FlutterLocalNotificationsPlugin _notifications;
final EventManager _eventManager;
Future<void> initialize() async {
const AndroidInitializationSettings androidSettings = AndroidInitializationSettings('app_icon');
const InitializationSettings settings = InitializationSettings(android: androidSettings);
await _notifications.initialize(settings);
await _scheduleAllReminders();
}
Future<void> _scheduleReminder(AnniversaryEvent event) async {
final reminderDays = event.reminderTime == ReminderTime.custom
? event.customReminderDays
: event.reminderTime.daysBefore;
if (reminderDays < 0) return;
final reminderDate = event.date.subtract(Duration(days: reminderDays));
if (reminderDate.isAfter(DateTime.now())) {
await _notifications.schedule(
int.parse(event.id),
'${event.personName}的${event.type.label}',
'距离${event.personName}的${event.type.label}还有${reminderDays}天',
reminderDate,
NotificationDetails(
android: AndroidNotificationDetails(
'anniversary_channel',
'纪念日提醒',
importance: Importance.high,
),
),
);
}
}
}
5.3 礼物推荐实现
dart
class GiftRecommender {
final List<GiftIdea> _giftDatabase;
Future<List<GiftIdea>> getRecommendations({
required RelationshipType relationship,
required AnniversaryType type,
required BudgetLevel budget,
}) async {
var recommendations = _giftDatabase.where((gift) {
return gift.budget == budget &&
_isSuitableForRelationship(gift, relationship) &&
_isSuitableForAnniversary(gift, type);
}).toList();
recommendations.sort((a, b) => b.popularity.compareTo(a.popularity));
return recommendations.take(10).toList();
}
bool _isSuitableForRelationship(GiftIdea gift, RelationshipType relationship) {
switch (relationship) {
case RelationshipType.family:
return gift.categories.contains('family');
case RelationshipType.friend:
return gift.categories.contains('friend');
case RelationshipType.lover:
return gift.categories.contains('romantic');
default:
return true;
}
}
}
5.4 数据同步实现
dart
class DataSynchronizer {
final FirebaseFirestore _firestore;
final EventManager _eventManager;
Future<void> syncData() async {
final events = await _eventManager.getAllEvents();
for (final event in events) {
await _firestore.collection('events').doc(event.id).set({
'name': event.name,
'personName': event.personName,
'date': event.date,
'type': event.type.index,
'relationship': event.relationship.index,
'reminderTime': event.reminderTime.index,
'customReminderDays': event.customReminderDays,
'notes': event.notes,
'createdAt': event.createdAt,
'updatedAt': event.updatedAt,
});
}
}
Future<void> restoreData() async {
final snapshot = await _firestore.collection('events').get();
for (final doc in snapshot.docs) {
final data = doc.data();
final event = AnniversaryEvent(
id: doc.id,
name: data['name'],
personName: data['personName'],
date: (data['date'] as Timestamp).toDate(),
type: AnniversaryType.values[data['type']],
relationship: RelationshipType.values[data['relationship']],
reminderTime: ReminderTime.values[data['reminderTime']],
customReminderDays: data['customReminderDays'],
notes: data['notes'],
photoPath: data['photoPath'] ?? '',
createdAt: (data['createdAt'] as Timestamp).toDate(),
updatedAt: (data['updatedAt'] as Timestamp).toDate(),
);
await _eventManager.addEvent(event);
}
}
}
5.5 统计分析实现
dart
class StatisticsService {
final EventManager _eventManager;
Future<Map<String, dynamic>> getStatistics() async {
final allEvents = await _eventManager.getAllEvents();
final typeCount = <AnniversaryType, int>{};
for (final event in allEvents) {
typeCount[event.type] = (typeCount[event.type] ?? 0) + 1;
}
final now = DateTime.now();
final thisMonth = DateTime(now.year, now.month, 1);
final nextMonth = DateTime(now.year, now.month + 1, 1);
final thisMonthEvents = allEvents.where((event) {
final eventDate = DateTime(event.date.year, event.date.month, event.date.day);
return eventDate.isAfter(thisMonth.subtract(Duration(days: 1))) &&
eventDate.isBefore(nextMonth);
}).length;
final nextMonthEvents = allEvents.where((event) {
final eventDate = DateTime(event.date.year, event.date.month, event.date.day);
return eventDate.isAfter(nextMonth.subtract(Duration(days: 1))) &&
eventDate.isBefore(DateTime(now.year, now.month + 2, 1));
}).length;
return {
'totalEvents': allEvents.length,
'typeCount': typeCount,
'thisMonthEvents': thisMonthEvents,
'nextMonthEvents': nextMonthEvents,
};
}
}
六、交互设计
6.1 事件管理流程
提醒服务 事件管理器 事件页 用户 提醒服务 事件管理器 事件页 用户 点击添加事件 显示添加表单 填写事件信息 设置提醒时间 点击保存 保存事件 注册提醒 提醒已设置 保存成功 显示成功提示
6.2 提醒流程
是
否
应用启动
初始化提醒服务
加载所有事件
计算提醒时间
设置系统通知
定时检查
是否到达提醒时间?
发送通知
用户点击通知
打开事件详情
推荐礼物
用户查看详情
6.3 礼物推荐流程
选择关系类型
选择预算等级
选择纪念日类型
生成推荐
点击礼物
点击收藏
返回
礼物页
选择关系
选择预算
选择场合
推荐礼物
查看详情
收藏礼物
七、扩展功能规划
7.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 2024-03-31 基础UI框架 事件管理 提醒功能 礼物推荐 数据备份 多语言支持 社交分享 智能助手 日历集成 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 生日纪念日提醒应用开发计划
7.2 功能扩展建议
7.2.1 智能助手
智能功能:
- 语音添加事件
- 智能礼物推荐
- 自动生成祝福语
- 提醒频率优化
7.2.2 社交分享
社交功能:
- 一键分享纪念日
- 群聊提醒
- 协作管理
- 集体礼物筹钱
7.2.3 日历集成
集成功能:
- 系统日历同步
- ical导出导入
- 多日历支持
- 节假日提醒
八、注意事项
8.1 开发注意事项
-
权限管理:通知权限需正确处理
-
数据安全:个人信息需加密存储
-
提醒准确性:时区和日期计算需准确
-
用户体验:界面需简洁直观
-
电池优化:后台提醒需优化功耗
8.2 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 提醒不触发 | 通知权限未开启 | 引导用户开启权限 |
| 日期错误 | 时区设置问题 | 统一使用UTC时间 |
| 数据丢失 | 未备份 | 自动云备份 |
| 电池消耗快 | 后台运行 | 优化后台处理 |
| 礼物推荐不精准 | 数据不足 | 增加礼物数据 |
8.3 使用技巧
🎂 生日纪念日提醒使用技巧 🎂
添加事件技巧
- 批量添加家人生日,节省时间
- 为重要事件添加详细备注
- 设置合适的提醒时间,避免临时抱佛脚
- 使用照片功能,增加事件辨识度
提醒设置建议
- 家人朋友:提前3-7天提醒
- 重要纪念日:提前14天提醒
- 一般事件:当天提醒
- 自定义提醒:根据需要设置
礼物选择建议
- 家人:实用贴心的礼物
- 朋友:符合兴趣爱好的礼物
- 恋人:浪漫有意义的礼物
- 同事:专业得体的礼物
九、运行说明
9.1 环境要求
| 环境 | 版本要求 |
|---|---|
| Flutter SDK | >= 3.0.0 |
| Dart SDK | >= 2.17.0 |
| 通知权限 | 允许系统通知 |
| 存储空间 | 建议50MB以上 |
| 鸿蒙OS | API 21+ |
9.2 运行命令
bash
# 查看可用设备
flutter devices
# 运行到iOS设备
flutter run -t lib/main_birthday_anniversary_reminder.dart
# 运行到Android设备
flutter run -t lib/main_birthday_anniversary_reminder.dart
# 运行到Web服务器
flutter run -d web-server -t lib/main_birthday_anniversary_reminder.dart --web-port 8143
# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_birthday_anniversary_reminder.dart
# 代码分析
flutter analyze lib/main_birthday_anniversary_reminder.dart
十、总结
生日纪念日提醒应用通过事件管理、提醒设置、礼物推荐、个人中心四大模块,为用户提供了一个贴心的生活管理工具。应用不仅能帮助用户记录和管理各种重要日期,还能在关键时刻提供提醒,推荐合适的礼物,让用户再也不会忘记重要日子。
核心功能涵盖事件管理、智能提醒、礼物推荐、数据统计四大模块。纪念日类型包括生日、结婚纪念日、相识纪念日、毕业纪念日、入职纪念日等多种类型;提醒时间从当天到提前14天,满足不同场景需求;关系类型从家人到同事,涵盖各种社交关系;礼物推荐根据关系、预算、场合等因素,提供个性化建议。
应用采用 Material Design 3 设计规范,以温馨的粉色为主色调,象征关爱与温暖。通过本应用,希望能够帮助用户更好地管理人际关系,维护重要情感连接,让生活更加温馨和有序。
生日纪念日提醒------让重要日子不再被遗忘