Flutter 框架跨平台鸿蒙开发 - 派对策划助手应用
运行效果图派对策划助手是一款专为活动组织者设计的全流程管理工具,旨在帮助用户轻松策划和管理各类派对活动。从生日派对到婚礼庆典,从公司年会到节日聚会,应用提供任务管理、嘉宾邀请、预算控制等一站式解决方案,让每一个重要时刻都完美呈现。无论是温馨的家庭聚会,还是盛大的企业活动,策划工作都涉及众多细节:场地预订、嘉宾邀请、餐饮安排、装饰布置、预算控制等。本应用通过系统化的管理方式,帮助用户理清思路、把控进
派对策划助手应用
欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图



1.1 应用简介
派对策划助手是一款专为活动组织者设计的全流程管理工具,旨在帮助用户轻松策划和管理各类派对活动。从生日派对到婚礼庆典,从公司年会到节日聚会,应用提供任务管理、嘉宾邀请、预算控制等一站式解决方案,让每一个重要时刻都完美呈现。
无论是温馨的家庭聚会,还是盛大的企业活动,策划工作都涉及众多细节:场地预订、嘉宾邀请、餐饮安排、装饰布置、预算控制等。本应用通过系统化的管理方式,帮助用户理清思路、把控进度,确保活动顺利进行。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 活动管理 | 创建和管理多个活动 | DropdownButton切换 |
| 任务清单 | 待办事项分类管理 | ListView + 状态切换 |
| 嘉宾管理 | 邀请名单和出席确认 | ListView + 状态标记 |
| 预算管理 | 支出记录和预算追踪 | LinearProgressIndicator |
| 进度统计 | 实时显示活动筹备进度 | 计算属性 |
| 倒计时 | 显示活动剩余天数 | DateTime计算 |
1.3 支持的派对类型
| 派对类型 | 英文标识 | 图标 | 颜色 | 典型规模 |
|---|---|---|---|---|
| 生日派对 | birthday | cake | 粉色 | 10-50人 |
| 婚礼庆典 | wedding | favorite | 紫色 | 50-300人 |
| 毕业派对 | graduation | school | 蓝色 | 20-100人 |
| 迎婴派对 | babyShower | child_care | 青色 | 10-30人 |
| 公司活动 | corporate | business | 靛蓝色 | 50-500人 |
| 节日派对 | holiday | celebration | 橙色 | 10-100人 |
| 乔迁派对 | housewarming | home | 绿色 | 10-50人 |
| 周年纪念 | anniversary | heart_broken | 红色 | 20-100人 |
1.4 任务状态
| 状态 | 英文标识 | 图标 | 颜色 |
|---|---|---|---|
| 待办 | pending | radio_button_unchecked | 橙色 |
| 进行中 | inProgress | pending | 蓝色 |
| 已完成 | completed | check_circle | 绿色 |
1.5 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| 状态管理 | setState | - |
| 目标平台 | 鸿蒙OS | API 21+ |
1.6 项目结构
lib/
└── main_party_planner.dart
├── PartyPlannerApp # 应用入口
├── PartyType # 派对类型枚举
├── TaskStatus # 任务状态枚举
├── PartyEvent # 活动模型
├── Task # 任务模型
├── Guest # 嘉宾模型
├── Expense # 支出模型
├── HomePage # 主页面
│ ├── _buildHomePage() # 首页
│ ├── _buildTasksPage() # 任务页
│ ├── _buildGuestsPage() # 嘉宾页
│ └── _buildBudgetPage() # 预算页
└── 辅助方法
二、系统架构
2.1 整体架构图
2.2 类图设计
2.3 数据流程图
2.4 活动策划流程
三、核心模块设计
3.1 数据模型设计
3.1.1 活动模型 (PartyEvent)
class PartyEvent {
final String id; // 唯一标识
final String name; // 活动名称
final PartyType type; // 派对类型
final DateTime date; // 活动日期
final String venue; // 活动场地
final int estimatedGuests; // 预计嘉宾人数
final double budget; // 预算金额
final String notes; // 备注信息
final DateTime createdAt; // 创建时间
}
3.1.2 任务模型 (Task)
class Task {
final String id; // 唯一标识
final String eventId; // 所属活动ID
final String title; // 任务标题
final String description; // 任务描述
final DateTime? dueDate; // 截止日期
final TaskStatus status; // 任务状态
final int priority; // 优先级(1-3)
final String category; // 任务分类
final double estimatedCost; // 预估费用
}
3.1.3 嘉宾模型 (Guest)
class Guest {
final String id; // 唯一标识
final String eventId; // 所属活动ID
final String name; // 嘉宾姓名
final String phone; // 联系电话
final String email; // 电子邮箱
final bool isAttending; // 是否出席
final String dietaryRequirements; // 饮食要求
final String notes; // 备注
}
3.1.4 支出模型 (Expense)
class Expense {
final String id; // 唯一标识
final String eventId; // 所属活动ID
final String category; // 支出分类
final String description; // 支出描述
final double amount; // 支出金额
final DateTime date; // 支出日期
final bool isPaid; // 是否已支付
}
3.2 页面结构设计
3.2.1 首页模块
3.2.2 任务页面
任务页面按状态分组显示:
┌─────────────────────────────────────────────────┐
│ ⚪ 待办 (3) │
│ ┌───────────────────────────────────────────┐ │
│ │ ○ 安排娱乐节目 待办 │ │
│ │ ○ 购买装饰品 待办 │ │
│ └───────────────────────────────────────────┘ │
│ │
│ 🔵 进行中 (1) │
│ ┌───────────────────────────────────────────┐ │
│ │ ◐ 订购蛋糕 进行中 │ │
│ └───────────────────────────────────────────┘ │
│ │
│ ✅ 已完成 (2) │
│ ┌───────────────────────────────────────────┐ │
│ │ ✓ 预订场地 已完成 │ │
│ │ ✓ 发送邀请函 已完成 │ │
│ └───────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
3.2.3 嘉宾页面
┌─────────────────────────────────────────────────┐
│ 嘉宾管理 (3/4) │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ 👤 张三 已确认 │ │
│ │ 13800138001 │ │
│ └───────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────┐ │
│ │ 👤 李四 已确认 │ │
│ │ 13800138002 │ │
│ │ 饮食要求: 素食 │ │
│ └───────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────┐ │
│ │ 👤 王五 待确认 │ │
│ │ 13800138003 │ │
│ └───────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
3.2.4 预算页面
┌─────────────────────────────────────────────────┐
│ 预算概览 │
│ │
│ 总预算 已使用 剩余 │
│ ¥5000 ¥2800 ¥2200 │
│ │
│ ████████████░░░░░░░░░░░░░░░░░░░░░░ │
│ 已使用 56.0% │
│ │
├─────────────────────────────────────────────────┤
│ 支出分类 │
│ │
│ 场地 ¥2000 ████████████████████ │
│ 餐饮 ¥500 █████ │
│ 装饰 ¥300 ███ │
│ │
├─────────────────────────────────────────────────┤
│ 支出明细 │
│ │
│ 🧾 场地租金 ¥2000 │
│ 场地 · 1月10日 已支付 │
│ │
│ 🧾 餐饮预订定金 ¥500 │
│ 餐饮 · 1月12日 已支付 │
└─────────────────────────────────────────────────┘
3.3 核心功能实现
3.3.1 活动选择器
Widget _buildEventSelector() {
return DropdownButtonFormField<String>(
value: _selectedEventId,
items: _events.map((event) {
return DropdownMenuItem(
value: event.id,
child: Row(
children: [
Icon(event.type.typeIcon, color: event.type.typeColor),
SizedBox(width: 8),
Text(event.name),
],
),
);
}).toList(),
onChanged: (value) {
setState(() {
_selectedEventId = value;
});
},
);
}
3.3.2 任务状态切换
void _toggleTaskStatus(Task task) {
setState(() {
final index = _tasks.indexWhere((t) => t.id == task.id);
if (index != -1) {
TaskStatus newStatus;
switch (task.status) {
case TaskStatus.pending:
newStatus = TaskStatus.inProgress;
break;
case TaskStatus.inProgress:
newStatus = TaskStatus.completed;
break;
case TaskStatus.completed:
newStatus = TaskStatus.pending;
break;
}
_tasks[index] = task.copyWith(status: newStatus);
}
});
}
3.3.3 嘉宾出席确认
void _toggleGuestAttendance(Guest guest) {
setState(() {
final index = _guests.indexWhere((g) => g.id == guest.id);
if (index != -1) {
_guests[index] = guest.copyWith(isAttending: !guest.isAttending);
}
});
}
3.3.4 统计数据计算
// 已完成任务数
int get _completedTasks => _eventTasks.where((t) => t.status == TaskStatus.completed).length;
// 确认出席嘉宾数
int get _attendingGuests => _eventGuests.where((g) => g.isAttending).length;
// 总支出金额
double get _totalExpenses => _eventExpenses.fold(0, (sum, e) => sum + e.amount);
// 活动倒计时
final daysLeft = event.date.difference(DateTime.now()).inDays;
四、UI设计规范
4.1 配色方案
应用采用粉色系为主色调,营造欢乐喜庆的氛围:
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | #E91E63 (Pink) | AppBar、按钮、强调元素 |
| 背景色 | #FFF5F8 | 页面背景 |
| 卡片背景 | #FFFFFF | 卡片、弹窗 |
| 文字主色 | #212121 | 主要文字 |
| 文字次色 | #757575 | 次要文字 |
派对类型专属颜色:
// 生日派对 - 粉色
Colors.pink
// 婚礼庆典 - 紫色
Colors.purple
// 毕业派对 - 蓝色
Colors.blue
// 迎婴派对 - 青色
Colors.cyan
// 公司活动 - 靛蓝色
Colors.indigo
// 节日派对 - 橙色
Colors.orange
// 乔迁派对 - 绿色
Colors.green
// 周年纪念 - 红色
Colors.red
4.2 字体规范
| 元素 | 字号 | 字重 | 颜色 |
|---|---|---|---|
| 页面标题 | 22px | Bold | #FFFFFF |
| 卡片标题 | 18px | Bold | #212121 |
| 统计数字 | 24px | Bold | 主色/对应色 |
| 正文内容 | 14px | Regular | #424242 |
| 辅助信息 | 12px | Regular | #757575 |
4.3 组件规范
4.3.1 任务项组件
ListTile(
leading: IconButton(
icon: Icon(task.status.statusIcon, color: task.status.statusColor),
onPressed: () => _toggleTaskStatus(task),
),
title: Text(task.title),
subtitle: Text('截止日期'),
trailing: Container(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4),
decoration: BoxDecoration(
color: task.status.statusColor.withOpacity(0.1),
borderRadius: BorderRadius.circular(12),
),
child: Text(task.status.statusName),
),
)
4.3.2 嘉宾卡片组件
Card(
child: ListTile(
leading: CircleAvatar(
backgroundColor: guest.isAttending ? Colors.green : Colors.grey,
child: Text(guest.name[0]),
),
title: Text(guest.name),
subtitle: Text(guest.phone),
trailing: TextButton(
onPressed: () => _toggleGuestAttendance(guest),
child: Text(guest.isAttending ? '已确认' : '待确认'),
),
),
)
五、扩展功能规划
5.1 后续版本规划
5.2 功能扩展建议
5.2.1 活动模板库
提供常见派对类型的预设模板:
- 任务清单模板
- 预算分配建议
- 时间安排参考
5.2.2 供应商管理
管理活动相关供应商信息:
- 场地供应商
- 餐饮服务商
- 装饰公司
- 摄影摄像
5.2.3 邀请函生成
自动生成电子邀请函:
- 多种模板选择
- 一键发送功能
- RSVP回复追踪
5.2.4 座位安排
可视化座位规划:
- 拖拽式座位安排
- 桌位分组管理
- 导出座位图
六、注意事项
6.1 开发注意事项
-
数据关联:任务、嘉宾、支出都需要关联到特定活动
-
状态管理:使用copyWith创建新对象更新状态
-
空值处理:_selectedEventId可能为空,需要做空值判断
-
计算属性:统计数据使用getter实时计算
6.2 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 数据不显示 | 未选择活动 | 检查_selectedEventId |
| 状态不更新 | 未调用setState | 确保在setState中更新 |
| 统计错误 | 过滤条件问题 | 检查eventId匹配 |
七、运行说明
7.1 环境要求
| 环境 | 版本要求 |
|---|---|
| Flutter SDK | >= 3.0.0 |
| Dart SDK | >= 2.17.0 |
| 鸿蒙OS | API 21+ |
7.2 运行命令
# 查看可用设备
flutter devices
# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 -t lib/main_party_planner.dart
# 运行到Windows
flutter run -d windows -t lib/main_party_planner.dart
# 代码分析
flutter analyze lib/main_party_planner.dart
八、总结
派对策划助手通过系统化的活动管理方式,帮助用户轻松策划各类派对活动。应用采用Flutter框架开发,支持鸿蒙OS等多平台运行,具有良好的跨平台兼容性。
核心功能包括活动管理、任务清单、嘉宾管理、预算控制等,满足了派对策划的基本需求。后续版本将陆续推出活动模板库、供应商管理、邀请函生成、座位安排等增强功能,进一步提升用户体验。
通过本应用,希望能够帮助更多人轻松策划完美派对,让每一个重要时刻都精彩呈现。
更多推荐


所有评论(0)