派对策划助手应用


欢迎加入开源鸿蒙跨平台社区: 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 整体架构图

Business Logic

Data Layer

Presentation Layer

首页
概览

任务页

嘉宾页

预算页

PartyEvent
活动模型

Task
任务模型

Guest
嘉宾模型

Expense
支出模型

PartyType
派对类型枚举

TaskStatus
任务状态枚举

活动选择器

任务状态切换

嘉宾出席确认

预算计算统计

2.2 类图设计

manages

manages

manages

manages

has

has

contains

PartyPlannerApp

+Widget build()

HomePage

-int _currentIndex

-List<PartyEvent> _events

-List<Task> _tasks

-List<Guest> _guests

-List<Expense> _expenses

-String? _selectedEventId

-List<Task> _eventTasks

-List<Guest> _eventGuests

-List<Expense> _eventExpenses

+Widget build()

-void _toggleTaskStatus()

-void _toggleGuestAttendance()

PartyEvent

+String id

+String name

+PartyType type

+DateTime date

+String venue

+int estimatedGuests

+double budget

+String notes

+DateTime createdAt

Task

+String id

+String eventId

+String title

+String description

+DateTime? dueDate

+TaskStatus status

+int priority

+String category

+double estimatedCost

+copyWith()

Guest

+String id

+String eventId

+String name

+String phone

+String email

+bool isAttending

+String dietaryRequirements

+copyWith()

Expense

+String id

+String eventId

+String category

+String description

+double amount

+DateTime date

+bool isPaid

«enumeration»

PartyType

birthday

wedding

graduation

babyShower

corporate

holiday

housewarming

anniversary

+String typeName

+String typeDescription

+IconData typeIcon

+Color typeColor

«enumeration»

TaskStatus

pending

inProgress

completed

+String statusName

+Color statusColor

+IconData statusIcon

2.3 数据流程图

切换活动

切换任务状态

确认嘉宾

添加支出

用户操作

操作类型

更新_selectedEventId

更新Task.status

更新Guest.isAttending

添加Expense

重新计算统计数据

刷新UI

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 首页模块

首页 _buildHomePage

头部卡片

活动选择器

快速统计

待办任务

应用标题

统计数据

下拉选择活动

任务进度

确认嘉宾

预算使用

任务列表预览

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 后续版本规划

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 活动管理功能 任务清单功能 嘉宾管理功能 预算管理功能 活动模板库 供应商管理 时间线规划 邀请函生成 座位安排 数据导出 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 派对策划助手开发计划

5.2 功能扩展建议

5.2.1 活动模板库

提供常见派对类型的预设模板:

  • 任务清单模板
  • 预算分配建议
  • 时间安排参考
5.2.2 供应商管理

管理活动相关供应商信息:

  • 场地供应商
  • 餐饮服务商
  • 装饰公司
  • 摄影摄像
5.2.3 邀请函生成

自动生成电子邀请函:

  • 多种模板选择
  • 一键发送功能
  • RSVP回复追踪
5.2.4 座位安排

可视化座位规划:

  • 拖拽式座位安排
  • 桌位分组管理
  • 导出座位图

六、注意事项

6.1 开发注意事项

  1. 数据关联:任务、嘉宾、支出都需要关联到特定活动

  2. 状态管理:使用copyWith创建新对象更新状态

  3. 空值处理:_selectedEventId可能为空,需要做空值判断

  4. 计算属性:统计数据使用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等多平台运行,具有良好的跨平台兼容性。

核心功能包括活动管理、任务清单、嘉宾管理、预算控制等,满足了派对策划的基本需求。后续版本将陆续推出活动模板库、供应商管理、邀请函生成、座位安排等增强功能,进一步提升用户体验。

通过本应用,希望能够帮助更多人轻松策划完美派对,让每一个重要时刻都精彩呈现。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐