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 整体架构图

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)
dart 复制代码
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)
dart 复制代码
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)
dart 复制代码
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)
dart 复制代码
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 活动选择器
dart 复制代码
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 任务状态切换
dart 复制代码
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 嘉宾出席确认
dart 复制代码
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 统计数据计算
dart 复制代码
// 已完成任务数
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 次要文字

派对类型专属颜色:

dart 复制代码
// 生日派对 - 粉色
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 任务项组件
dart 复制代码
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 嘉宾卡片组件
dart 复制代码
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 运行命令

bash 复制代码
# 查看可用设备
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等多平台运行,具有良好的跨平台兼容性。

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

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

相关推荐
沙雕不是雕又菜又爱玩6 小时前
基于HarmonyOS的笔记管理应用
harmonyos
@不误正业6 小时前
AI Agent多轮对话管理:3大架构源码级实现与性能对比(附鸿蒙实战)
人工智能·架构·harmonyos
里欧跑得慢6 小时前
Flutter 组件 powersync_core 的适配 鸿蒙Harmony 实战 - 驾驭极致离线优先架构、实现鸿蒙端高性能 SQL 增量同步与数据安全治理方案
flutter·harmonyos·鸿蒙·openharmony·powersync_core
轻口味7 小时前
HarmonyOS 6 自定义人脸识别模型9:基于tflite的人脸识别模型转换
华为·harmonyos
芙莉莲教你写代码7 小时前
Flutter 框架跨平台鸿蒙开发 - 网络安全学习应用
学习·web安全·flutter·华为·harmonyos
互联网散修8 小时前
零基础鸿蒙应用开发第二十五节:接口的行为契约能力
华为·harmonyos
@不误正业8 小时前
AI Agent工具调用深度实战-从Function-Calling到鸿蒙设备控制全链路
人工智能·华为·harmonyos
云和数据.ChenGuang10 小时前
鸿蒙应用对接扣子智能体:从 0 到 1 落地 AI 智能体集成
人工智能·华为·harmonyos
HwJack2011 小时前
HarmonyOS开发中ArkTS @Styles装饰器:告别复制粘贴,拥抱优雅的样式复用
华为·harmonyos