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

一、项目概述

运行效果图

image-20260410230915541

image-20260410230922668

image-20260410230931041

1.1 应用简介

校园闲置物品交换是一款校园服务应用,为学生提供闲置物品交换和交易的平台。支持物品发布、在线交换、即时聊天等功能,让用户轻松处理闲置物品。应用内置物品分类、价格协商、交易评价等功能,打造安全便捷的校园二手交易环境。

应用以活力的绿色为主色调,象征环保与循环利用。涵盖物品浏览、发布物品、消息中心、个人中心四大模块。用户可以发布闲置物品、浏览交换信息、在线沟通、完成交易。

1.2 核心功能

功能模块 功能描述 实现方式
物品浏览 浏览闲置物品信息 列表展示
发布物品 发布闲置物品 表单提交
在线聊天 买卖双方沟通 即时消息
交易管理 管理交易记录 状态跟踪
评价系统 交易双方互评 评分评价

1.3 物品分类定义

序号 分类名称 Emoji 描述
1 教材书籍 📚 教材、参考书、小说
2 电子数码 💻 手机、电脑、配件
3 生活用品 🏠 日用品、家具
4 服装鞋帽 👕 衣服、鞋子、包包
5 运动器材 运动装备、器材
6 学习用品 ✏️ 文具、笔记本
7 其他 📦 其他闲置物品

1.4 物品状态定义

序号 状态名称 Emoji 描述
1 在售 🟢 正在出售中
2 已预订 🟡 已被预订
3 已售出 🔴 交易完成
4 已下架 已下架

1.5 技术栈

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

1.6 项目结构

lib/
└── main_campus_exchange.dart
    ├── CampusExchangeApp            # 应用入口
    ├── ItemCategory                 # 物品分类枚举
    ├── ItemStatus                   # 物品状态枚举
    ├── Item                         # 物品模型
    ├── Message                      # 消息模型
    ├── Transaction                  # 交易模型
    ├── User                         # 用户模型
    ├── CampusExchangeHomePage       # 主页面(底部导航)
    ├── _buildBrowsePage             # 浏览页面
    ├── _buildPublishPage            # 发布页面
    ├── _buildMessagePage            # 消息页面
    ├── _buildProfilePage            # 个人中心页面
    ├── ItemCard                     # 物品卡片组件
    ├── MessageBubble                # 消息气泡组件
    └── TransactionCard              # 交易卡片组件

二、系统架构

2.1 整体架构图

Data Layer

Business Layer

Presentation Layer

主页面
CampusExchangeHomePage

浏览页

发布页

消息页

个人中心

物品列表

分类筛选

搜索功能

物品上传

信息填写

发布设置

聊天列表

消息详情

交易协商

我的物品

交易记录

评价管理

物品管理器
ItemManager

消息管理器
MessageManager

交易管理器
TransactionManager

Item
物品

Message
消息

Transaction
交易

User
用户

2.2 类图设计

has

has

references

references

references

references

references

CampusExchangeApp

+Widget build()

«enumeration»

ItemCategory

+String label

+String emoji

+books()

+electronics()

+daily()

+clothing()

+sports()

+stationery()

+other()

«enumeration»

ItemStatus

+String label

+String emoji

+available()

+reserved()

+sold()

+offline()

Item

+String id

+String title

+String description

+ItemCategory category

+double price

+String condition

+List<String> images

+String sellerId

+ItemStatus status

+DateTime createdAt

Message

+String id

+String senderId

+String receiverId

+String itemId

+String content

+DateTime timestamp

+bool isRead

Transaction

+String id

+String itemId

+String buyerId

+String sellerId

+TransactionStatus status

+DateTime createdAt

User

+String id

+String username

+String avatar

+String department

+double rating

+int transactionCount

2.3 页面导航流程

浏览

发布

消息

我的

应用启动

浏览页

底部导航

物品列表

发布物品

消息中心

个人中心

分类筛选

搜索物品

查看详情

联系卖家

在线聊天

协商交易

上传图片

填写信息

发布成功

聊天列表

我的物品

交易记录

我的评价

2.4 交易流程

交易管理 卖家 消息系统 物品详情 买家 交易管理 卖家 消息系统 物品详情 买家 浏览物品 显示物品信息 发送消息 推送消息 回复消息 显示回复 提出交易请求 发送请求 确认交易 创建交易 更新物品状态 交易确认 交易确认 确认收货 完成交易 提示评价 提示评价

三、核心模块设计

3.1 数据模型设计

3.1.1 物品分类枚举 (ItemCategory)
enum ItemCategory {
  books(label: '教材书籍', emoji: '📚'),
  electronics(label: '电子数码', emoji: '💻'),
  daily(label: '生活用品', emoji: '🏠'),
  clothing(label: '服装鞋帽', emoji: '👕'),
  sports(label: '运动器材', emoji: '⚽'),
  stationery(label: '学习用品', emoji: '✏️'),
  other(label: '其他', emoji: '📦');

  final String label;
  final String emoji;
}
3.1.2 物品模型 (Item)
class Item {
  final String id;              // 物品ID
  final String title;           // 物品标题
  final String description;     // 物品描述
  final ItemCategory category;  // 物品分类
  final double price;           // 价格
  final String condition;       // 成色
  final List<String> images;    // 图片列表
  final String sellerId;        // 卖家ID
  ItemStatus status;            // 物品状态
  final DateTime createdAt;     // 发布时间
}
3.1.3 消息模型 (Message)
class Message {
  final String id;              // 消息ID
  final String senderId;        // 发送者ID
  final String receiverId;      // 接收者ID
  final String itemId;          // 物品ID
  final String content;         // 消息内容
  final DateTime timestamp;     // 时间戳
  final bool isRead;            // 是否已读
}
3.1.4 交易模型 (Transaction)
class Transaction {
  final String id;              // 交易ID
  final String itemId;          // 物品ID
  final String buyerId;         // 买家ID
  final String sellerId;        // 卖家ID
  final TransactionStatus status; // 交易状态
  final DateTime createdAt;     // 创建时间
}
3.1.5 物品分类分布
35% 25% 15% 10% 8% 5% 2% 物品分类分布示例 教材书籍 电子数码 生活用品 服装鞋帽 运动器材 学习用品 其他

3.2 页面结构设计

3.2.1 主页面布局

CampusExchangeHomePage

IndexedStack

浏览页

发布页

消息页

个人中心

NavigationBar

浏览 Tab

发布 Tab

消息 Tab

我的 Tab

3.2.2 浏览页结构

浏览页

SliverAppBar

分类标签

物品列表

搜索入口

教材书籍

电子数码

生活用品

物品卡片

物品图片

价格信息

卖家信息

3.2.3 发布页结构

发布页

物品信息

图片上传

价格设置

发布设置

物品标题

物品描述

物品分类

选择图片

图片预览

价格输入

成色选择

发布按钮

3.2.4 消息页结构

消息页

SliverAppBar

聊天列表

未读提示

聊天项

对方头像

最新消息

时间显示

未读数量

消息提醒

3.3 物品发布逻辑

1-9张

过多或过少

开始发布

选择分类

上传图片

图片数量

填写信息

提示调整

设置价格

选择成色

预览物品

确认发布?

提交审核

保存草稿

发布成功

稍后发布

3.4 交易流程逻辑

发起交易

联系卖家

协商价格

达成一致?

创建交易

继续协商

物品预订

线下交易

交易完成?

确认收货

取消交易

双方评价

物品恢复

交易完成

交易取消


四、UI设计规范

4.1 配色方案

应用以活力的绿色为主色调,象征环保与循环利用:

颜色类型 色值 用途
主色 #4CAF50 (Green) 导航、主题元素
辅助色 #66BB6A 按钮高亮
第三色 #81C784 卡片背景
强调色 #A5D6A7 标签背景
背景色 #FAFAFA 页面背景
卡片背景 #FFFFFF 物品卡片

4.2 物品状态颜色

状态 色值 视觉效果
在售 #4CAF50 清新绿色
已预订 #FFC107 明亮黄色
已售出 #F44336 鲜艳红色
已下架 #9E9E9E 中性灰色

4.3 字体规范

元素 字号 字重 颜色
页面标题 24px Bold 主色
物品标题 18px Bold #000000
价格显示 20px Bold #FF5722
卖家名称 14px Medium #333333
物品描述 14px Regular #666666

4.4 组件规范

4.4.1 物品卡片
┌─────────────────────────────────────┐
│  ┌─────────────────────────────┐   │
│  │                             │   │
│  │         物品图片             │   │
│  │                             │   │
│  └─────────────────────────────┘   │
│                                     │
│  📚 高等数学教材(第七版)          │
│                                     │
│  💰 ¥25.00                         │
│                                     │
│  👤 张同学  ⭐ 4.8                  │
│                                     │
│  🟢 在售  ✨ 9成新                  │
└─────────────────────────────────────┘
4.4.2 分类标签
┌─────────────────────────────────────┐
│  物品分类                            │
│                                     │
│  [📚教材] [💻数码] [🏠生活]         │
│  [👕服装] [⚽运动] [✏️文具]         │
│  [📦其他]                           │
└─────────────────────────────────────┘
4.4.3 消息气泡
┌─────────────────────────────────────┐
│  聊天消息                            │
│                                     │
│  👤 张同学                           │
│  ┌─────────────────────────────┐   │
│  │ 你好,这个还在吗?           │   │
│  └─────────────────────────────┘   │
│  📅 10:30                          │
│                                     │
│           ┌─────────────────────────────┐
│           │ 在的,可以交换             │   │
│           └─────────────────────────────┘
│           📅 10:32                    │
└─────────────────────────────────────┘
4.4.4 发布表单
┌─────────────────────────────────────┐
│  发布物品                            │
│                                     │
│  物品标题                            │
│  ┌─────────────────────────────┐   │
│  │ 请输入物品标题               │   │
│  └─────────────────────────────┘   │
│                                     │
│  物品分类                            │
│  [📚教材] [💻数码] [🏠生活]         │
│                                     │
│  物品图片                            │
│  ┌───┐ ┌───┐ ┌───┐ ┌───┐         │
│  │ + │ │图1│ │图2│ │图3│         │
│  └───┘ └───┘ └───┘ └───┘         │
│                                     │
│  价格                                │
│  ┌─────────────────────────────┐   │
│  │ ¥ 请输入价格                 │   │
│  └─────────────────────────────┘   │
│                                     │
│  成色                                │
│  [全新] [9成新] [8成新] [7成新]     │
│                                     │
│  [发布物品]                         │
└─────────────────────────────────────┘
4.4.5 交易记录
┌─────────────────────────────────────┐
│  交易记录                            │
│                                     │
│  📚 高等数学教材                     │
│  💰 ¥25.00                          │
│                                     │
│  买家: 张同学                        │
│  卖家: 李同学                        │
│                                     │
│  状态: ✅ 交易完成                   │
│  📅 2024-01-15                      │
│                                     │
│  [查看详情] [评价交易]               │
└─────────────────────────────────────┘

五、核心功能实现

5.1 物品发布实现

class ItemPublisher {
  static Future<Item> publishItem({
    required String title,
    required String description,
    required ItemCategory category,
    required double price,
    required String condition,
    required List<String> images,
    required String sellerId,
  }) async {
    // 验证物品信息
    if (title.isEmpty) {
      throw Exception('物品标题不能为空');
    }
    
    if (price < 0) {
      throw Exception('价格不能为负数');
    }
    
    if (images.isEmpty) {
      throw Exception('请至少上传一张图片');
    }
    
    // 创建物品对象
    final item = Item(
      id: 'item_${DateTime.now().millisecondsSinceEpoch}',
      title: title,
      description: description,
      category: category,
      price: price,
      condition: condition,
      images: images,
      sellerId: sellerId,
      status: ItemStatus.available,
      createdAt: DateTime.now(),
    );
    
    return item;
  }
}

5.2 消息发送实现

class MessageService {
  static Future<Message> sendMessage({
    required String senderId,
    required String receiverId,
    required String itemId,
    required String content,
  }) async {
    // 验证消息内容
    if (content.isEmpty) {
      throw Exception('消息内容不能为空');
    }
    
    // 创建消息
    final message = Message(
      id: 'msg_${DateTime.now().millisecondsSinceEpoch}',
      senderId: senderId,
      receiverId: receiverId,
      itemId: itemId,
      content: content,
      timestamp: DateTime.now(),
      isRead: false,
    );
    
    // 发送通知
    await sendNotification(receiverId, message);
    
    return message;
  }
}

5.3 交易创建实现

class TransactionService {
  static Future<Transaction> createTransaction({
    required String itemId,
    required String buyerId,
    required String sellerId,
  }) async {
    // 检查物品状态
    final item = await ItemManager.getItem(itemId);
    if (item.status != ItemStatus.available) {
      throw Exception('物品不可交易');
    }
    
    // 创建交易
    final transaction = Transaction(
      id: 'trans_${DateTime.now().millisecondsSinceEpoch}',
      itemId: itemId,
      buyerId: buyerId,
      sellerId: sellerId,
      status: TransactionStatus.pending,
      createdAt: DateTime.now(),
    );
    
    // 更新物品状态
    await ItemManager.updateItemStatus(itemId, ItemStatus.reserved);
    
    return transaction;
  }
}

5.4 搜索功能实现

class ItemSearchService {
  static List<Item> search({
    required String keyword,
    required List<Item> items,
    ItemCategory? category,
    double? minPrice,
    double? maxPrice,
  }) {
    return items.where((item) {
      // 关键词匹配
      final matchesKeyword = keyword.isEmpty ||
        item.title.toLowerCase().contains(keyword.toLowerCase()) ||
        item.description.toLowerCase().contains(keyword.toLowerCase());
      
      // 分类筛选
      final matchesCategory = category == null || item.category == category;
      
      // 价格筛选
      final matchesPrice = (minPrice == null || item.price >= minPrice) &&
                          (maxPrice == null || item.price <= maxPrice);
      
      // 状态筛选
      final matchesStatus = item.status == ItemStatus.available;
      
      return matchesKeyword && matchesCategory && matchesPrice && matchesStatus;
    }).toList();
  }
}

5.5 评价功能实现

class ReviewService {
  static Future<void> submitReview({
    required String transactionId,
    required String reviewerId,
    required String revieweeId,
    required double rating,
    required String comment,
  }) async {
    // 验证评分
    if (rating < 1 || rating > 5) {
      throw Exception('评分必须在1-5之间');
    }
    
    // 创建评价
    final review = Review(
      id: 'review_${DateTime.now().millisecondsSinceEpoch}',
      transactionId: transactionId,
      reviewerId: reviewerId,
      revieweeId: revieweeId,
      rating: rating,
      comment: comment,
      createdAt: DateTime.now(),
    );
    
    // 更新用户评分
    await updateUserRating(revieweeId, rating);
  }
}

六、交互设计

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 使用技巧

📦 物品交换技巧 📦

发布物品

  • 拍摄清晰的物品照片
  • 详细描述物品状况
  • 合理定价参考市场
  • 及时回复买家消息

购买物品

  • 仔细查看物品信息
  • 与卖家充分沟通
  • 当面交易更安全
  • 及时确认收货评价

安全交易

  • 选择公共场所交易
  • 验证物品与描述一致
  • 保留交易记录
  • 遇到问题及时举报

评价建议

  • 客观真实评价
  • 详细描述交易体验
  • 给出建设性意见
  • 遵守评价规范

九、运行说明

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_campus_exchange.dart --web-port 8145

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

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

十、总结

校园闲置物品交换应用是一款校园服务应用,通过物品浏览、发布物品、消息中心、个人中心四大模块,为学生提供闲置物品交换和交易的平台。应用支持物品发布、在线交换、即时聊天等功能,让用户轻松处理闲置物品。

核心功能涵盖物品浏览、物品发布、在线聊天、交易管理四大模块。物品浏览支持分类筛选和搜索;物品发布支持图片上传和信息填写;在线聊天支持即时沟通和交易协商;交易管理支持交易记录和评价系统。

应用采用 Material Design 3 设计规范,以活力的绿色为主色调,象征环保与循环利用。通过本应用,希望能够帮助学生便捷地处理闲置物品,促进校园资源循环利用,打造安全便捷的校园二手交易环境。

校园闲置物品交换——循环利用,绿色校园


Logo

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

更多推荐