互助服务平台


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

一、项目概述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.1 应用简介

邻里互助服务平台是一款面向社区居民的互助服务应用,旨在促进邻里之间的互帮互助,构建和谐社区。居民可以在平台上发布求助信息、提供帮助服务、分享闲置物品、组织社区活动等。通过积分激励机制,鼓励居民积极参与社区建设,实现资源共享、互帮互助的社区生态。

应用以清新的青色为主色调,象征邻里之间的信任与和谐。涵盖首页大厅、互助大厅、我的互助、个人中心四大模块。用户可以发布求助、接单帮助、查看记录、管理积分,快速参与社区互助。

1.2 核心功能

功能模块 功能描述 实现方式
求助发布 发布求助信息 表单提交
接单帮助 接受他人求助 状态流转
服务提供 提供技能服务 服务卡片
积分系统 帮助获积分 积分计算
等级体系 6级成长体系 积分累计
位置距离 显示距离信息 模拟定位

1.3 求助类型定义

序号 类型名称 Emoji 描述
1 生活帮助 🛒 代购跑腿、照看宠物
2 技能服务 🔧 家电维修、辅导家教
3 物品借用 📦 工具借用、物品借用
4 紧急求助 🆘 紧急联系、医疗求助

1.4 求助状态定义

序号 状态名称 Emoji 描述
1 待接单 等待邻居接单
2 进行中 🔄 正在帮助中
3 已完成 帮助已完成
4 已取消 求助已取消

1.5 用户等级定义

序号 等级名称 Emoji 所需积分 特权
1 新邻居 🏠 0 基础功能
2 热心邻居 💝 100 优先展示服务
3 邻里达人 300 专属标识
4 社区之星 🌟 600 活动优先报名
5 模范邻居 💎 1000 积分双倍奖励
6 社区榜样 👑 2000 社区推荐展示

1.6 积分规则定义

序号 行为 积分变化 说明
1 发布求助 0 免费发布求助
2 接受帮助 -10 感谢帮助者
3 提供帮助 +15 帮助他人
4 完成服务 +20 完成服务订单
5 参与活动 +10 参与社区活动
6 每日签到 +2 连续签到奖励

1.7 技术栈

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

1.8 项目结构

lib/
└── main_neighbor_help.dart
    ├── NeighborHelpApp              # 应用入口
    ├── HelpType                     # 求助类型枚举
    ├── HelpStatus                   # 求助状态枚举
    ├── UserLevel                    # 用户等级枚举
    ├── HelpRequest                  # 求助模型
    ├── Service                      # 服务模型
    ├── MainScreen                   # 主页面(底部导航)
    ├── HomePage                     # 首页
    ├── HelpListPage                 # 互助大厅
    ├── MyHelpPage                   # 我的互助
    ├── ProfilePage                  # 个人中心
    ├── HelpDetailSheet              # 求助详情弹窗
    └── PublishHelpSheet             # 发布求助弹窗

二、系统架构

2.1 整体架构图

Data Layer

Business Layer

Presentation Layer

主页面
MainScreen

首页

互助大厅

我的互助

个人中心

快捷入口

附近求助

热门服务

筛选条件

求助列表

我发布的

我帮助的

我接单的

用户信息

积分等级

功能菜单

求助管理器
HelpManager

积分计算器
PointsCalculator

等级管理器
LevelManager

HelpRequest
求助数据

Service
服务数据

User
用户数据

2.2 类图设计

has

has

references

NeighborHelpApp

+Widget build()

«enumeration»

HelpType

+String label

+String emoji

+Color color

+life()

+skill()

+borrow()

+emergency()

«enumeration»

HelpStatus

+String label

+String emoji

+Color color

+pending()

+inProgress()

+completed()

+cancelled()

«enumeration»

UserLevel

+String label

+String emoji

+int minPoints

+newbie()

+warm()

+expert()

+star()

+model()

+leader()

+fromPoints()

HelpRequest

+String id

+String title

+String content

+HelpType type

+String publisherId

+String publisherName

+String publisherAvatar

+String address

+double distance

+int rewardPoints

+HelpStatus status

+DateTime createTime

+String helperName

Service

+String id

+String title

+String description

+String providerId

+String providerName

+String providerAvatar

+int providerPoints

+double rating

+int orderCount

+double price

2.3 页面导航流程

首页

互助大厅

我的互助

我的

应用启动

首页

底部导航

快捷入口

求助列表

记录列表

个人中心

发布求助

提供服务

闲置共享

社区活动

填写表单

提交发布

等待接单

筛选类型

查看详情

接单?

确认接单

返回列表

2.4 求助处理流程

系统 帮助者 互助大厅 首页 发布者 系统 帮助者 互助大厅 首页 发布者 点击发布 提交求助信息 显示新求助 浏览求助 查看详情 确认接单 发送通知 联系沟通 提供帮助 确认完成 发放积分

三、核心模块设计

3.1 数据模型设计

3.1.1 求助类型枚举 (HelpType)
enum HelpType {
  life('生活帮助', '🛒', Color(0xFF4CAF50)),
  skill('技能服务', '🔧', Color(0xFF2196F3)),
  borrow('物品借用', '📦', Color(0xFFFF9800)),
  emergency('紧急求助', '🆘', Color(0xFFE91E63));

  final String label;
  final String emoji;
  final Color color;
}
3.1.2 求助状态枚举 (HelpStatus)
enum HelpStatus {
  pending('待接单', '⏳', Colors.orange),
  inProgress('进行中', '🔄', Colors.blue),
  completed('已完成', '✅', Colors.green),
  cancelled('已取消', '❌', Colors.grey);

  final String label;
  final String emoji;
  final Color color;
}
3.1.3 求助模型 (HelpRequest)
class HelpRequest {
  final String id;              // 求助ID
  final String title;           // 求助标题
  final String content;         // 求助内容
  final HelpType type;          // 求助类型
  final String publisherId;     // 发布者ID
  final String publisherName;   // 发布者昵称
  final String publisherAvatar; // 发布者头像
  final String address;         // 地址
  final double distance;        // 距离(km)
  final int rewardPoints;       // 悬赏积分
  final HelpStatus status;      // 求助状态
  final DateTime createTime;    // 创建时间
  final String? helperName;     // 帮助者昵称
}
3.1.4 服务模型 (Service)
class Service {
  final String id;              // 服务ID
  final String title;           // 服务标题
  final String description;     // 服务描述
  final String providerId;      // 提供者ID
  final String providerName;    // 提供者昵称
  final String providerAvatar;  // 提供者头像
  final int providerPoints;     // 提供者积分
  final double rating;          // 服务评分
  final int orderCount;         // 订单数
  final double price;           // 服务价格
}
3.1.5 求助类型分布
35% 25% 20% 20% 求助类型分布示例 生活帮助 技能服务 物品借用 紧急求助

3.2 页面结构设计

3.2.1 主页面布局

MainScreen

IndexedStack

首页

互助大厅

我的互助

个人中心

NavigationBar

首页 Tab

互助大厅 Tab

我的互助 Tab

我的 Tab

FloatingActionButton

发布按钮

3.2.2 首页结构

首页

SliverAppBar

快捷入口

用户信息卡

附近求助

热门服务

发布求助

提供服务

闲置共享

社区活动

用户头像

用户信息

积分显示

签到按钮

求助卡片列表

服务横向列表

3.2.3 求助卡片结构

求助卡片

类型图标

求助信息

状态标签

类型Emoji

类型颜色背景

求助标题

求助内容

距离时间

悬赏积分

状态文字

状态颜色

3.2.4 互助大厅结构

互助大厅

SliverAppBar

筛选栏

求助列表

类型筛选

排序选择

全部

生活帮助

技能服务

物品借用

紧急求助

距离最近

最新发布

悬赏最高

3.3 接单处理逻辑

待接单

进行中

已完成

已取消

浏览求助列表

选择求助

查看详情

状态判断

显示接单按钮

显示联系按钮

显示完成信息

显示取消原因

点击接单

验证用户资格

验证通过?

更新状态

提示错误

发送通知

显示成功

3.4 积分计算逻辑

发布求助

接受帮助

提供帮助

完成服务

参与活动

每日签到

用户行为

行为类型

积分不变

扣除悬赏积分

获得基础积分

获得服务积分

获得活动积分

获得签到积分

更新用户积分

检查等级变化

达到升级条件?

更新用户等级

保持当前等级


四、UI设计规范

4.1 配色方案

应用以清新的青色为主色调,象征邻里之间的信任与和谐:

颜色类型 色值 用途
主色 #00BCD4 (Cyan) 导航、主题元素
辅助色 #4CAF50 生活帮助
第三色 #2196F3 技能服务
强调色 #FF9800 物品借用
警示色 #E91E63 紧急求助
背景色 #FAFAFA 页面背景
卡片背景 #FFFFFF 求助卡片

4.2 求助类型颜色

类型 色值 视觉效果
生活帮助 #4CAF50 清新绿色
技能服务 #2196F3 专业蓝色
物品借用 #FF9800 温暖橙色
紧急求助 #E91E63 警示粉色

4.3 字体规范

元素 字号 字重 颜色
页面标题 20px Bold 主色
求助标题 16px Medium #000000
类型标签 12px Regular 类型色
状态标签 11px Regular 状态色
积分数字 20px Bold #FFC107

4.4 组件规范

4.4.1 快捷入口
┌─────────────────────────────────────┐
│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐│
│  │  🛒  │ │  🔧  │ │  📦  │ │  🎉  ││
│  │发布  │ │提供  │ │闲置  │ │社区  ││
│  │求助  │ │服务  │ │共享  │ │活动  ││
│  └──────┘ └──────┘ └──────┘ └──────┘│
└─────────────────────────────────────┘
4.4.2 用户信息卡
┌─────────────────────────────────────┐
│  👤 社区居民 ⭐                      │
│     阳光小区 3栋                     │
│                        ⭐ 380积分    │
│                        [签到 +2]    │
└─────────────────────────────────────┘
4.4.3 求助卡片
┌─────────────────────────────────────┐
│  ┌────┐  帮忙代购蔬菜水果    💰10   │
│  │ 🛒 │  家里老人腿脚不便...         │
│  └────┘                              │
│  📍 0.2km  ⏰ 2小时前    [⏳ 待接单] │
└─────────────────────────────────────┘
4.4.4 服务卡片
┌─────────────────────────────────────┐
│  👤 刘师傅              ⭐ 4.9      │
│  家电维修服务                        │
│  空调、冰箱、洗衣机等家电维修        │
│  ¥50                        156单   │
└─────────────────────────────────────┘
4.4.5 发布表单
┌─────────────────────────────────────┐
│  发布求助                            │
│                                     │
│  选择类型                            │
│  [🛒 生活帮助] [🔧 技能服务]        │
│  [📦 物品借用] [🆘 紧急求助]        │
│                                     │
│  求助标题                            │
│  [请简要描述您的需求        ]       │
│                                     │
│  详细描述                            │
│  [请详细描述您的需求...     ]       │
│                                     │
│  悬赏积分    [-] 10 [+]             │
│                                     │
│  [        发布求助        ]         │
└─────────────────────────────────────┘

五、核心功能实现

5.1 求助列表筛选实现

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

  
  State<HelpListPage> createState() => _HelpListPageState();
}

class _HelpListPageState extends State<HelpListPage> {
  HelpType? _selectedType;
  String _sortBy = 'distance';

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

5.2 接单功能实现

void _acceptHelp(HelpRequest help, BuildContext context) {
  if (help.status != HelpStatus.pending) {
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(content: Text('该求助已被接单')),
    );
    return;
  }
  
  Navigator.pop(context);
  ScaffoldMessenger.of(context).showSnackBar(
    const SnackBar(content: Text('接单成功!')),
  );
}

5.3 积分计算实现

int calculatePoints(UserAction action, {int? reward}) {
  switch (action) {
    case UserAction.publishHelp:
      return 0;
    case UserAction.acceptHelp:
      return -(reward ?? 10);
    case UserAction.provideHelp:
      return reward ?? 15;
    case UserAction.completeService:
      return 20;
    case UserAction.joinActivity:
      return 10;
    case UserAction.dailySignIn:
      return 2;
    default:
      return 0;
  }
}

5.4 等级计算实现

enum UserLevel {
  newbie('新邻居', '🏠', 0),
  warm('热心邻居', '💝', 100),
  expert('邻里达人', '⭐', 300),
  star('社区之星', '🌟', 600),
  model('模范邻居', '💎', 1000),
  leader('社区榜样', '👑', 2000);

  final String label;
  final String emoji;
  final int minPoints;

  static UserLevel fromPoints(int points) {
    return UserLevel.values.lastWhere(
      (level) => points >= level.minPoints,
      orElse: () => UserLevel.newbie,
    );
  }
}

5.5 发布求助实现

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

  
  State<PublishHelpSheet> createState() => _PublishHelpSheetState();
}

class _PublishHelpSheetState extends State<PublishHelpSheet> {
  final _titleController = TextEditingController();
  final _contentController = TextEditingController();
  HelpType _selectedType = HelpType.life;
  int _rewardPoints = 10;

  void _submit() {
    Navigator.pop(context);
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(content: Text('发布成功!等待邻居接单')),
    );
  }
}

六、交互设计

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_neighbor_help.dart --web-port 8159

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

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

十、总结

邻里互助服务平台通过首页大厅、互助大厅、我的互助、个人中心四大模块,为社区居民提供了一个便捷的互助服务平台。应用支持4种求助类型、4种求助状态、6级用户等级,让居民轻松参与社区互助,构建和谐邻里关系。

核心功能涵盖求助发布、接单帮助、服务提供、积分系统四大模块。求助类型包括生活帮助、技能服务、物品借用、紧急求助;求助状态从待接单到已完成,完整覆盖互助流程;用户等级从新邻居到社区榜样,激励居民积极参与;积分系统通过多种方式获取积分,促进社区良性循环。

应用采用 Material Design 3 设计规范,以清新的青色为主色调,象征邻里之间的信任与和谐。通过本应用,希望能够帮助社区居民建立互帮互助的良好关系,共同构建温馨和谐的社区环境。

邻里互助服务平台——共建和谐社区


Logo

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

更多推荐