开源鸿蒙跨平台Flutter开发:校园兼职信息发布应用
摘要: 校园兼职信息发布平台是一款面向高校学生的跨平台应用,基于Flutter开发,支持鸿蒙OS和Web端。应用提供兼职信息发布、分类浏览、在线申请、消息通知等功能,涵盖家教、餐饮、设计等8种兼职类型,并定义招聘中、已招满等状态。采用Material Design 3风格,以绿色为主色调,包含兼职广场、发布、个人中心和消息四大模块。技术栈包括Flutter 3.0+和Dart 2.17+,架构分为
·
欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图




1.1 应用简介
校园兼职信息发布是一款面向高校学生的兼职招聘信息平台。支持兼职信息发布、浏览搜索、在线申请、消息通知等功能,帮助学生便捷找到合适的兼职工作,同时为商家提供高效的招聘渠道。应用以清新的绿色为主色调,象征活力与机遇。涵盖兼职广场、发布兼职、我的兼职、消息中心四大模块。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 兼职分类 | 8种兼职类型分类 | 枚举定义 |
| 信息发布 | 发布兼职招聘信息 | 表单提交 |
| 浏览搜索 | 搜索筛选兼职信息 | 条件过滤 |
| 在线申请 | 一键申请兼职岗位 | 状态管理 |
| 消息通知 | 申请状态实时通知 | 消息列表 |
| 收藏管理 | 收藏感兴趣的兼职 | 数据存储 |
1.3 兼职类型定义
| 序号 | 类型名称 | Emoji | 时薪范围 | 描述 |
|---|---|---|---|---|
| 1 | 家教辅导 | 📚 | 50-200元 | 学科辅导、语言培训 |
| 2 | 餐饮服务 | 🍔 | 15-30元 | 服务员、收银、后厨 |
| 3 | 促销导购 | 🛒 | 20-50元 | 商场促销、地推活动 |
| 4 | 设计美工 | 🎨 | 50-150元 | 平面设计、UI设计 |
| 5 | 程序开发 | 💻 | 80-300元 | 前端、后端、小程序 |
| 6 | 文案编辑 | ✍️ | 30-80元 | 公众号、文案撰写 |
| 7 | 翻译服务 | 🌐 | 50-200元 | 笔译、口译服务 |
| 8 | 其他兼职 | 📋 | 面议 | 其他类型兼职 |
1.4 兼职状态定义
| 序号 | 状态名称 | Emoji | 描述 |
|---|---|---|---|
| 1 | 招聘中 | 🟢 | 正在招聘,可申请 |
| 2 | 已招满 | 🔴 | 名额已满 |
| 3 | 已下架 | ⚫ | 信息已下架 |
| 4 | 已暂停 | 🟡 | 暂停招聘 |
1.5 申请状态定义
| 序号 | 状态名称 | Emoji | 描述 |
|---|---|---|---|
| 1 | 待处理 | ⏳ | 等待雇主查看 |
| 2 | 已通过 | ✅ | 申请已通过 |
| 3 | 已拒绝 | ❌ | 申请被拒绝 |
| 4 | 已取消 | 🚫 | 用户取消申请 |
1.6 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| 状态管理 | setState | - |
| 目标平台 | 鸿蒙OS / Web | API 21+ |
1.7 项目结构
lib/
└── main_campus_part_time_job.dart
├── CampusPartTimeJobApp # 应用入口
├── JobType # 兼职类型枚举
├── JobStatus # 兼职状态枚举
├── ApplyStatus # 申请状态枚举
├── PartTimeJob # 兼职信息模型
├── JobApplication # 申请记录模型
├── Message # 消息模型
├── CampusPartTimeJobHomePage # 主页面(底部导航)
├── _buildJobSquarePage # 兼职广场页
├── _buildPublishPage # 发布兼职页
├── _buildMyJobsPage # 我的兼职页
├── _buildMessagesPage # 消息中心页
└── 各类辅助组件
二、系统架构
2.1 整体架构图
2.2 类图设计
2.3 页面导航流程
2.4 兼职申请流程
三、核心模块设计
3.1 兼职广场模块
兼职广场是用户浏览和搜索兼职信息的主要入口,提供分类筛选、关键词搜索、排序等功能。
核心功能:
- 分类筛选 - 按兼职类型筛选
- 关键词搜索 - 标题、描述关键词搜索
- 薪资筛选 - 按薪资范围筛选
- 排序方式 - 按发布时间、薪资排序
- 兼职卡片 - 展示关键信息预览
3.2 发布兼职模块
发布兼职模块允许用户发布招聘信息,填写职位详情、薪资待遇、联系方式等。
核心功能:
- 基本信息 - 标题、类型、描述
- 薪资待遇 - 薪资金额、结算方式
- 时间地点 - 工作时间、工作地点
- 联系方式 - 联系人、联系电话
- 任职要求 - 技能要求、经验要求
- 预览发布 - 信息预览确认
3.3 我的兼职模块
我的兼职模块管理用户发布的兼职和申请的兼职,提供状态追踪和管理功能。
核心功能:
- 我的发布 - 查看发布的兼职信息
- 我的申请 - 查看申请记录和状态
- 我的收藏 - 查看收藏的兼职
- 状态管理 - 上架/下架/编辑兼职
3.4 消息中心模块
消息中心接收和展示系统通知、申请通知等消息。
核心功能:
- 系统通知 - 平台公告、活动通知
- 申请通知 - 申请状态变更通知
- 消息列表 - 按时间排序展示
- 已读标记 - 标记消息已读
四、数据模型设计
4.1 兼职信息模型
class PartTimeJob {
final String id; // 兼职ID
final String title; // 兼职标题
final String description; // 职位描述
final JobType type; // 兼职类型
JobStatus status; // 兼职状态
final int salary; // 薪资金额
final String salaryUnit; // 薪资单位
final String location; // 工作地点
final String contactName; // 联系人
final String contactPhone; // 联系电话
final DateTime publishTime; // 发布时间
final DateTime startTime; // 开始时间
final DateTime endTime; // 结束时间
final int applicantCount; // 申请人数
final int maxApplicants; // 最大人数
final String publisherId; // 发布者ID
final List<String> requirements; // 任职要求
}
4.2 申请记录模型
class JobApplication {
final String id; // 申请ID
final String jobId; // 兼职ID
final String applicantId; // 申请人ID
final String applicantName; // 申请人姓名
ApplyStatus status; // 申请状态
final DateTime applyTime; // 申请时间
final String message; // 申请留言
}
4.3 消息模型
class Message {
final String id; // 消息ID
final String title; // 消息标题
final String content; // 消息内容
final String type; // 消息类型
final DateTime time; // 消息时间
bool isRead; // 是否已读
final String? relatedJobId; // 关联兼职ID
}
五、界面设计
5.1 配色方案
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | #4CAF50 | 品牌色、按钮 |
| 次色 | #81C784 | 辅助色、背景 |
| 强调色 | #FF9800 | 重要信息 |
| 背景色 | #F5F5F5 | 页面背景 |
| 卡片色 | #FFFFFF | 卡片背景 |
| 文字色 | #212121 | 主要文字 |
| 次文字 | #757575 | 次要文字 |
5.2 字体规范
| 字体类型 | 字号 | 字重 | 用途 |
|---|---|---|---|
| 大标题 | 24sp | Bold | 页面标题 |
| 标题 | 18sp | Medium | 卡片标题 |
| 正文 | 14sp | Regular | 正文内容 |
| 辅助文字 | 12sp | Regular | 辅助信息 |
| 小字 | 10sp | Regular | 标签、时间 |
5.3 间距规范
| 间距类型 | 数值 | 用途 |
|---|---|---|
| 页面边距 | 16dp | 页面左右边距 |
| 卡片间距 | 12dp | 卡片之间间距 |
| 内容间距 | 8dp | 内容元素间距 |
| 紧凑间距 | 4dp | 紧凑元素间距 |
六、关键代码实现
6.1 主入口
void main() {
runApp(const CampusPartTimeJobApp());
}
class CampusPartTimeJobApp extends StatelessWidget {
const CampusPartTimeJobApp({super.key});
Widget build(BuildContext context) {
return MaterialApp(
title: '校园兼职信息发布',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(
seedColor: const Color(0xFF4CAF50),
brightness: Brightness.light,
),
useMaterial3: true,
),
home: const CampusPartTimeJobHomePage(),
);
}
}
6.2 兼职类型枚举
enum JobType {
tutor(label: '家教辅导', emoji: '📚', minSalary: 50, maxSalary: 200),
catering(label: '餐饮服务', emoji: '🍔', minSalary: 15, maxSalary: 30),
promotion(label: '促销导购', emoji: '🛒', minSalary: 20, maxSalary: 50),
design(label: '设计美工', emoji: '🎨', minSalary: 50, maxSalary: 150),
programming(label: '程序开发', emoji: '💻', minSalary: 80, maxSalary: 300),
writing(label: '文案编辑', emoji: '✍️', minSalary: 30, maxSalary: 80),
translation(label: '翻译服务', emoji: '🌐', minSalary: 50, maxSalary: 200),
other(label: '其他兼职', emoji: '📋', minSalary: 0, maxSalary: 0);
final String label;
final String emoji;
final int minSalary;
final int maxSalary;
const JobType({
required this.label,
required this.emoji,
required this.minSalary,
required this.maxSalary,
});
}
七、测试用例
7.1 功能测试
| 测试项 | 测试步骤 | 预期结果 |
|---|---|---|
| 浏览兼职 | 进入兼职广场 | 显示兼职列表 |
| 筛选分类 | 点击分类标签 | 显示对应类型兼职 |
| 搜索兼职 | 输入关键词搜索 | 显示匹配结果 |
| 发布兼职 | 填写信息并提交 | 发布成功 |
| 申请兼职 | 点击申请按钮 | 申请成功 |
| 查看消息 | 进入消息中心 | 显示消息列表 |
7.2 边界测试
| 测试项 | 测试条件 | 预期结果 |
|---|---|---|
| 空列表 | 无兼职数据 | 显示空状态提示 |
| 超长文本 | 标题超长 | 自动截断显示 |
| 无搜索结果 | 搜索无匹配 | 显示无结果提示 |
八、部署说明
8.1 环境要求
- Flutter SDK >= 3.0.0
- Dart SDK >= 2.17.0
- Android SDK >= 21 (鸿蒙OS兼容)
8.2 运行命令
flutter run -d web-server --web-port 8150 --web-hostname 0.0.0.0
九、版本记录
| 版本 | 日期 | 更新内容 |
|---|---|---|
| v1.0.0 | 2024-01-XX | 初始版本发布 |
十、联系方式
项目地址: [GitHub仓库地址]
问题反馈: [Issues地址]
作者博客: [博客地址]
开源社区: https://openharmonycrossplatform.csdn.net
更多推荐


所有评论(0)