鲜花礼品配送预约


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

一、项目概述

运行效果图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.1 应用简介

鲜花礼品配送预约是一款面向鲜花礼品行业的在线预订与配送服务应用。用户可以浏览精选鲜花花束、礼品套装,选择配送时间和地址,在线下单预约配送。支持节日特惠、生日祝福、商务送礼等多种场景,让用户轻松传递心意,表达情感。

应用以浪漫的玫红色为主色调,象征鲜花与爱情的美好。涵盖商品浏览、购物车、订单管理、个人中心四大模块。用户可以浏览商品、加入购物车、下单支付、查看订单,快速完成鲜花礼品预约。

1.2 核心功能

功能模块 功能描述 实现方式
商品浏览 浏览鲜花礼品商品 卡片列表
分类筛选 按类型筛选商品 标签筛选
购物车 管理选购商品 状态管理
订单预约 下单预约配送 表单提交
订单管理 查看订单状态 列表展示
配送追踪 查看配送进度 状态流转

1.3 商品分类定义

序号 分类名称 Emoji 描述
1 鲜花花束 💐 精选鲜花花束
2 节日特惠 🎉 节日限定优惠
3 礼品套装 🎁 精美礼品组合
4 蛋糕甜点 🎂 生日蛋糕甜点
5 绿植盆栽 🪴 室内绿植盆栽

1.4 订单状态定义

序号 状态名称 Emoji 描述
1 待支付 💳 等待用户支付
2 已支付 支付成功
3 配送中 🚚 正在配送
4 已完成 🎊 配送完成
5 已取消 订单取消

1.5 配送时段定义

序号 时段名称 时间范围 描述
1 上午 09:00-12:00 上午配送
2 下午 14:00-18:00 下午配送
3 傍晚 18:00-21:00 傍晚配送
4 全天 09:00-21:00 全天可配送

1.6 场景标签定义

序号 场景名称 Emoji 描述
1 生日祝福 🎂 生日礼物
2 爱情表白 💕 情人节礼物
3 商务送礼 💼 商务礼品
4 节日庆祝 🎉 节日礼物
5 探病慰问 🌻 探望慰问
6 开业祝贺 🎊 开业花篮

1.7 技术栈

技术领域 技术选型 版本要求
开发框架 Flutter >= 3.0.0
编程语言 Dart >= 2.17.0
设计规范 Material Design 3 -
状态管理 setState -
数据存储 内存模拟 -
目标平台 鸿蒙OS / Web API 21+

1.8 项目结构

lib/
└── main_flower_delivery.dart
    ├── FlowerDeliveryApp          # 应用入口
    ├── ProductCategory            # 商品分类枚举
    ├── OrderStatus                # 订单状态枚举
    ├── DeliveryTime               # 配送时段枚举
    ├── Product                    # 商品模型
    ├── CartItem                   # 购物车模型
    ├── Order                      # 订单模型
    ├── MainScreen                 # 主页面(底部导航)
    ├── HomePage                   # 首页
    ├── ProductListPage            # 商品列表
    ├── CartPage                   # 购物车
    ├── OrderPage                  # 订单管理
    ├── ProfilePage                # 个人中心
    ├── ProductDetailSheet         # 商品详情弹窗
    └── CheckoutSheet              # 结算弹窗

二、系统架构

2.1 整体架构图

Data Layer

Business Layer

Presentation Layer

主页面
MainScreen

首页

商品列表

购物车

订单管理

个人中心

轮播广告

分类入口

热门推荐

筛选条件

商品网格

商品列表

结算功能

订单列表

订单详情

购物车管理器
CartManager

订单管理器
OrderManager

价格计算器
PriceCalculator

Product
商品数据

CartItem
购物车数据

Order
订单数据

2.2 类图设计

contains

contains

has

FlowerDeliveryApp

+Widget build()

«enumeration»

ProductCategory

+String label

+String emoji

+Color color

+bouquet()

+festival()

+gift()

+cake()

+plant()

«enumeration»

OrderStatus

+String label

+String emoji

+Color color

+pending()

+paid()

+delivering()

+completed()

+cancelled()

Product

+String id

+String name

+String description

+double price

+double originalPrice

+ProductCategory category

+String image

+int sales

+double rating

+List tags

CartItem

+Product product

+int quantity

+String cardMessage

+DateTime deliveryDate

+String deliveryTime

+String deliveryAddress

Order

+String id

+List items

+double totalPrice

+OrderStatus status

+DateTime createTime

+DateTime deliveryTime

+String address

+String recipientName

+String recipientPhone

2.3 页面导航流程

首页

商品

购物车

订单

我的

应用启动

首页

底部导航

浏览商品

商品列表

购物车

订单列表

个人中心

查看详情

加入购物车?

选择数量

加入成功

返回浏览

修改数量

结算下单

填写信息

支付确认

2.4 下单流程

系统 结算页 购物车 用户 系统 结算页 购物车 用户 选择商品 进入结算 填写收件人 选择配送时间 填写祝福语 确认支付 创建订单 扣除库存 分配配送员 订单创建成功 发送确认通知

三、核心模块设计

3.1 数据模型设计

3.1.1 商品分类枚举 (ProductCategory)
enum ProductCategory {
  bouquet('鲜花花束', '💐', Color(0xFFE91E63)),
  festival('节日特惠', '🎉', Color(0xFFFF9800)),
  gift('礼品套装', '🎁', Color(0xFF9C27B0)),
  cake('蛋糕甜点', '🎂', Color(0xFFFFEB3B)),
  plant('绿植盆栽', '🪴', Color(0xFF4CAF50));

  final String label;
  final String emoji;
  final Color color;
}
3.1.2 订单状态枚举 (OrderStatus)
enum OrderStatus {
  pending('待支付', '💳', Colors.orange),
  paid('已支付', '✅', Colors.blue),
  delivering('配送中', '🚚', Colors.teal),
  completed('已完成', '🎊', Colors.green),
  cancelled('已取消', '❌', Colors.grey);

  final String label;
  final String emoji;
  final Color color;
}
3.1.3 商品模型 (Product)
class Product {
  final String id;              // 商品ID
  final String name;            // 商品名称
  final String description;     // 商品描述
  final double price;           // 现价
  final double originalPrice;   // 原价
  final ProductCategory category; // 分类
  final String image;           // 图片
  final int sales;              // 销量
  final double rating;          // 评分
  final List<String> tags;      // 场景标签
}
3.1.4 购物车模型 (CartItem)
class CartItem {
  final Product product;        // 商品
  int quantity;                 // 数量
  String cardMessage;           // 祝福卡片
  DateTime? deliveryDate;       // 配送日期
  String deliveryTime;          // 配送时段
  String deliveryAddress;       // 配送地址
}
3.1.5 商品分类分布
40% 20% 15% 15% 10% 商品分类分布示例 鲜花花束 礼品套装 节日特惠 蛋糕甜点 绿植盆栽

3.2 页面结构设计

3.2.1 主页面布局

MainScreen

IndexedStack

首页

商品列表

购物车

订单管理

个人中心

NavigationBar

首页 Tab

商品 Tab

购物车 Tab

订单 Tab

我的 Tab

3.2.2 首页结构

首页

SliverAppBar

搜索栏

轮播广告

分类入口

热门推荐

限时特惠

鲜花花束

节日特惠

礼品套装

蛋糕甜点

绿植盆栽

商品卡片网格

特惠商品列表

3.2.3 商品卡片结构

商品卡片

商品图片

商品信息

价格区域

操作按钮

商品封面

销量标签

商品名称

场景标签

评分显示

现价

原价划线

加入购物车

3.2.4 购物车结构

购物车

商品列表

配送信息

祝福卡片

结算区域

商品项

商品图片

商品信息

数量调整

配送日期

配送时段

配送地址

祝福语输入

合计金额

结算按钮

3.3 购物流程逻辑

浏览商品

查看详情

加入购物车?

选择数量

添加成功

继续购物?

进入购物车

返回列表

确认商品

填写配送信息

添加祝福卡片

确认订单

支付

订单创建成功

3.4 价格计算逻辑

获取购物车商品

计算商品总价

有优惠?

应用优惠

原价计算

计算配送费

满足免配送?

免配送费

加配送费

计算最终价格


四、UI设计规范

4.1 配色方案

应用以浪漫的玫红色为主色调,象征鲜花与爱情的美好:

颜色类型 色值 用途
主色 #E91E63 (Pink) 导航、主题元素
辅助色 #F48FB1 次要按钮
第三色 #CE93D8 礼品套装
强调色 #FF9800 节日特惠
背景色 #FAFAFA 页面背景
卡片背景 #FFFFFF 商品卡片

4.2 分类颜色

分类 色值 视觉效果
鲜花花束 #E91E63 浪漫粉色
节日特惠 #FF9800 活力橙色
礼品套装 #9C27B0 优雅紫色
蛋糕甜点 #FFEB3B 温馨黄色
绿植盆栽 #4CAF50 清新绿色

4.3 字体规范

元素 字号 字重 颜色
页面标题 20px Bold 主色
商品名称 16px Medium #000000
价格 18px Bold #E91E63
原价 12px Regular #999999
销量 12px Regular #666666

4.4 组件规范

4.4.1 分类入口
┌─────────────────────────────────────┐
│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐│
│  │  💐  │ │  🎉  │ │  🎁  │ │  🎂  ││
│  │鲜花  │ │节日  │ │礼品  │ │蛋糕  ││
│  │花束  │ │特惠  │ │套装  │ │甜点  ││
│  └──────┘ └──────┘ └──────┘ └──────┘│
└─────────────────────────────────────┘
4.4.2 商品卡片
┌─────────────────────────────────────┐
│  ┌─────────────────────────────┐   │
│  │         商品图片             │   │
│  │                    🔥 热销   │   │
│  └─────────────────────────────┘   │
│  浪漫玫瑰鲜花花束                    │
│  💕爱情表白  ⭐ 4.9  📦 已售128     │
│  ¥199  ¥299                        │
│  [加入购物车]                       │
└─────────────────────────────────────┘
4.4.3 购物车商品
┌─────────────────────────────────────┐
│  ┌────┐  浪漫玫瑰鲜花花束            │
│  │ 🌹 │  ¥199                        │
│  └────┘  [-] 1 [+]    🗑️            │
└─────────────────────────────────────┘
4.4.4 配送信息表单
┌─────────────────────────────────────┐
│  配送信息                            │
│                                     │
│  收件人姓名                          │
│  [请输入收件人姓名          ]       │
│                                     │
│  联系电话                            │
│  [请输入联系电话            ]       │
│                                     │
│  配送地址                            │
│  [请输入详细配送地址        ]       │
│                                     │
│  配送日期                            │
│  [选择日期          ▼]              │
│                                     │
│  配送时段                            │
│  [上午 09:00-12:00   ▼]            │
│                                     │
│  祝福卡片                            │
│  [写下您的祝福语...          ]      │
└─────────────────────────────────────┘
4.4.5 订单卡片
┌─────────────────────────────────────┐
│  订单号: 202401150001               │
│  ────────────────────────────────   │
│  🌹 浪漫玫瑰鲜花花束 x1              │
│  🎁 精美礼品套装 x1                  │
│  ────────────────────────────────   │
│  配送时间: 2024-01-15 上午          │
│  收件人: 张先生 138****1234         │
│  ────────────────────────────────   │
│  合计: ¥399            [🚚 配送中]  │
└─────────────────────────────────────┘

五、核心功能实现

5.1 商品列表筛选实现

class ProductListPage extends StatefulWidget {
  const ProductListPage({super.key});

  
  State<ProductListPage> createState() => _ProductListPageState();
}

class _ProductListPageState extends State<ProductListPage> {
  ProductCategory? _selectedCategory;
  String _sortBy = 'sales';

  
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          _buildFilterBar(context),
          Expanded(child: _buildProductGrid(context)),
        ],
      ),
    );
  }
}

5.2 购物车管理实现

class CartPage extends StatefulWidget {
  const CartPage({super.key});

  
  State<CartPage> createState() => _CartPageState();
}

class _CartPageState extends State<CartPage> {
  final List<CartItem> _cartItems = [];

  void _updateQuantity(int index, int delta) {
    setState(() {
      _cartItems[index].quantity += delta;
      if (_cartItems[index].quantity <= 0) {
        _cartItems.removeAt(index);
      }
    });
  }

  double get _totalPrice {
    return _cartItems.fold(
      0, (sum, item) => sum + item.product.price * item.quantity
    );
  }
}

5.3 订单创建实现

void _createOrder() {
  final order = Order(
    id: 'ORD${DateTime.now().millisecondsSinceEpoch}',
    items: List.from(_cartItems),
    totalPrice: _totalPrice,
    status: OrderStatus.paid,
    createTime: DateTime.now(),
    deliveryTime: _selectedDate,
    address: _addressController.text,
    recipientName: _nameController.text,
    recipientPhone: _phoneController.text,
  );

  setState(() {
    _orders.insert(0, order);
    _cartItems.clear();
  });

  Navigator.pop(context);
  ScaffoldMessenger.of(context).showSnackBar(
    const SnackBar(content: Text('订单创建成功!')),
  );
}

5.4 价格计算实现

double calculateTotal(List<CartItem> items) {
  double subtotal = items.fold(
    0, (sum, item) => sum + item.product.price * item.quantity
  );
  
  double deliveryFee = subtotal >= 99 ? 0 : 10;
  
  return subtotal + deliveryFee;
}

5.5 商品详情弹窗实现

class ProductDetailSheet extends StatelessWidget {
  final Product product;

  const ProductDetailSheet({super.key, required this.product});

  
  Widget build(BuildContext context) {
    return Container(
      padding: const EdgeInsets.all(16),
      child: Column(
        children: [
          _buildProductImage(),
          _buildProductInfo(),
          _buildTags(),
          _buildPrice(),
          _buildAddToCartButton(),
        ],
      ),
    );
  }
}

六、交互设计

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 会员积分系统

会员功能:

  • 积分获取规则
  • 积分兑换商品
  • 会员等级特权
  • 生日专属优惠

八、注意事项

8.1 开发注意事项

  1. 库存管理:下单时需检查商品库存

  2. 价格精度:金额计算需注意精度问题

  3. 配送时间:需验证配送时间有效性

  4. 地址验证:配送地址需格式验证

  5. 支付安全:支付信息需加密处理

8.2 常见问题

问题 原因 解决方案
商品下架 库存不足 提示用户
价格变动 促销结束 刷新价格
配送超时 高峰期 提前预约
地址错误 输入有误 地址校验
支付失败 网络问题 重试支付

8.3 使用技巧

💐 鲜花礼品选购技巧 💐

选购鲜花技巧

  • 根据场合选择合适花材
  • 注意鲜花保鲜期
  • 提前预约确保配送
  • 选择合适配送时段

礼品搭配建议

  • 鲜花+蛋糕=生日祝福
  • 鲜花+礼品=节日庆祝
  • 绿植+花盆=开业祝贺
  • 花束+卡片=表达心意

配送注意事项

  • 提前1-2天预约
  • 填写准确收件信息
  • 选择合适配送时段
  • 添加祝福卡片

九、运行说明

9.1 环境要求

环境 版本要求
Flutter SDK >= 3.0.0
Dart SDK >= 2.17.0
鸿蒙OS API 21+
Web浏览器 Chrome 90+

9.2 运行命令

# 查看可用设备
flutter devices

# 运行到Web服务器
flutter run -d web-server -t lib/main_flower_delivery.dart --web-port 8160

# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_flower_delivery.dart

# 代码分析
flutter analyze lib/main_flower_delivery.dart

十、总结

鲜花礼品配送预约通过首页、商品列表、购物车、订单管理、个人中心五大模块,为用户提供了一个便捷的鲜花礼品预订平台。应用支持5种商品分类、5种订单状态、4种配送时段,让用户轻松选购心仪商品,传递美好心意。

核心功能涵盖商品浏览、购物车管理、订单预约、配送追踪四大模块。商品分类包括鲜花花束、节日特惠、礼品套装、蛋糕甜点、绿植盆栽;订单状态从待支付到已完成,完整覆盖订单生命周期;配送时段支持上午、下午、傍晚、全天灵活选择;购物车支持数量调整、祝福卡片、配送信息填写。

应用采用 Material Design 3 设计规范,以浪漫的玫红色为主色调,象征鲜花与爱情的美好。通过本应用,希望能够帮助用户轻松选购鲜花礼品,传递心意,表达情感。

鲜花礼品配送预约——传递美好心意


Logo

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

更多推荐