helii-patel/EmergencyResponseApp
GitHub: helii-patel/EmergencyResponseApp
一个基于 Flutter 的校园应急事件上报与管理应用,支持离线操作、优先级排序、状态追踪和管理员统计看板。
Stars: 0 | Forks: 0
# 应急响应应用 - 开发指南
## 项目结构
```
lib/
├── main.dart # App entry point
├── models/
│ └── incident.dart # Incident model with Hive annotations
├── providers/
│ └── incident_provider.dart # State management using Provider
├── services/
│ └── local_storage_service.dart # Hive database operations
├── screens/
│ ├── home_screen.dart # Main dashboard and incident list
│ ├── incident_reporting_screen.dart # Report new incident
│ ├── incident_details_screen.dart # View & manage incident details
│ └── search_filter_screen.dart # Search and filter incidents
└── utils/
└── app_theme.dart # Theme, colors, and utilities
```
## 架构
该应用遵循清晰、模块化的架构:
1. **Models**:基于 Hive 的持久化数据模型
2. **Services**:数据库和本地存储操作
3. **Providers**:使用 Provider 包进行状态管理
4. **Screens**:UI 层
5. **Utils**:主题和辅助函数
## 核心功能
### 1. 事件上报
- 用户可以通过以下方式快速上报事件:
- 标题和描述
- 类别选择(医疗、火灾、安保、事故、其他)
- 优先级(低、中、高、紧急)
- 位置(GPS 或模拟)
- 自动生成事件 ID (UUID)
### 2. 优先级处理逻辑
- 事件会自动按以下规则排序:
1. 优先级(紧急 → 高 → 中 → 低)
2. 上报时间(最新优先)
- 紧急事件会以红色视觉高亮显示
- 颜色编码的优先级指示器:
- 红色:紧急
- 橙色:高
- 黄色:中
- 绿色:低
### 3. 事件追踪
- 状态追踪:已上报 → 处理中 → 已解决
- 每个状态的自动时间戳
- 管理员可以分配响应人员
- 实时状态更新
### 4. 管理员控制台
- 统计数据:
- 事件总数
- 活跃案件
- 已解决案件
- 各优先级分布情况
- 可视化图表和指示器
- 优先级分布概览
### 5. 搜索与筛选模块
- 搜索条件:
- 事件 ID
- 标题/关键词
- 筛选条件:
- 状态(已上报、处理中、已解决)
- 优先级(紧急、高、中、低)
- 类别(医疗、火灾、安保、事故、其他)
- 带有结果计数的实时筛选
### 6. 离线功能
- 所有事件均使用 Hive 进行本地存储
- 自动同步追踪
- 清晰标记未同步的事件
- 数据在应用重启后依然保留
- 未来规划:后端同步功能
## 状态管理
该应用使用 **Provider 模式** 进行状态管理:
```
IncidentProvider
├── incidents (filtered list)
├── allIncidents (all incidents)
├── addIncident()
├── updateIncident()
├── deleteIncident()
├── setStatusFilter()
├── setPriorityFilter()
├── setCategoryFilter()
├── setSearchQuery()
└── clearFilters()
```
## 本地存储
事件使用 Hive 存储,具有以下特点:
- 持久化存储
- 快速访问
- 类型安全的查询
- 离线支持
- 同步状态追踪
## 用户流程
### 上报事件:
1. 在主屏幕点击“+”按钮
2. 填写事件详情
3. 选择类别和优先级
4. 获取位置(GPS 或模拟)
5. 提交上报
6. 事件立即显示在列表中
### 管理事件(管理员):
1. 查看事件详情
2. 分配响应人员
3. 更新状态(处理中 → 已解决)
4. 追踪解决时间
### 搜索事件:
1. 导航到“搜索”标签页
2. 输入搜索查询(ID 或标题)
3. 应用筛选器(状态、优先级、类别)
4. 查看筛选结果
## 技术栈
- **框架**:Flutter (Dart)
- **状态管理**:Provider 6.0
- **本地存储**:Hive 2.2
- **定位**:Geolocator 9.0
- **UUID**:UUID 4.0
- **日期/时间**:intl 0.19
## 设置说明
### 1. 克隆仓库
```
git clone https://github.com/helii-patel/Smart-Emergency-Response-Incident-Reporting-App.git
cd emergency_response_app
```
### 2. 安装依赖
```
flutter pub get
```
### 3. 生成 Hive Adapters
```
flutter pub run build_runner build
```
### 4. 运行应用
```
flutter run
```
## 构建 APK
```
flutter build apk --release
```
## 测试
### 测试场景:
1. **上报事件**:创建具有不同优先级的事件
2. **筛选与搜索**:测试所有筛选组合
3. **状态更新**:更改事件状态并进行验证
4. **离线**:禁用网络并上报事件
5. **优先级排序**:验证紧急事件是否排在最前面
## 未来增强计划
1. **后端集成**:Firebase/REST API 同步
2. **实时地图**:集成 Google Maps 进行位置可视化
3. **通知**:针对紧急事件的推送通知
4. **数据分析**:事件统计和趋势
5. **多语言支持**:本地化
6. **语音上报**:语音转文字的事件上报
7. **导出报告**:PDF/Excel 导出功能
8. **用户角色**:不同的访问权限(用户、响应人员、管理员)
9. **事件历史**:归档和历史分析
10. **真实 GPS 集成**:结合地图的实际设备定位
## 安全注意事项
- 所有表单的输入验证
- 网络/定位问题的错误处理
- 本地数据加密(未来增强)
- 安全身份验证(未来增强)
## 性能优化
- 使用 ListView.builder 进行高效的列表渲染
- 使用 Provider 进行状态管理(最小化重建)
- 使用 Hive 实现 O(1) 数据库访问
- 使用 Async/await 执行非阻塞操作
## 许可证
智慧校园应急响应系统教育项目
## 作者
Heli Patel - B.Tech 学生
标签:App开发, Dart, Flutter, GPS, Hive, MVC架构, Provider, SaaS, UI设计, UUID, 事件报告, 事件管理, 仪表盘, 任务跟踪, 优先级管理, 安全事件响应, 安全运营, 定位服务, 工单系统, 库, 应急响应, 应急响应系统, 应用架构, 扫描框架, 数据管道, 本地存储, 状态管理, 状态追踪, 移动应用开发, 网络研究, 跨平台开发, 软件工程