# eFood Table Waiter App - 餐厅桌台管理应用
## 项目概述
- **项目类型**:移动应用(Flutter跨平台应用)
- **主要功能**:餐厅桌台点餐管理系统,支持服务员通过移动设备管理桌台订单
- **技术栈**:
- 前端框架:Flutter 3.38.5
- 状态管理:GetX
- 后端通信:REST API
- 推送通知:Firebase Cloud Messaging
- 本地存储:Shared Preferences
- 图片缓存:Cached Network Image
## 模块结构
```
lib/
├── common/ # 公共组件
│ ├── controllers/ # 通用控制器(主题、本地化)
│ ├── models/ # 数据模型
│ └── widgets/ # 通用UI组件
├── data/
│ └── api/ # API客户端和检查器
├── features/ # 功能模块
│ ├── cart/ # 购物车模块
│ │ ├── controllers/
│ │ ├── domain/
│ │ ├── screens/
│ │ └── widgets/
│ ├── home/ # 首页模块
│ │ ├── controllers/
│ │ ├── screens/
│ │ └── widgets/
│ ├── order/ # 订单模块
│ │ ├── controllers/
│ │ ├── domain/
│ │ ├── screens/
│ │ └── widgets/
│ ├── promotion/ # 促销模块
│ └── splash/ # 启动页
├── helper/ # 辅助工具类
├── theme/ # 主题配置
└── util/ # 工具类
```
## 核心业务逻辑
### 1. 桌台订单管理
- **桌台选择**:服务员可以选择特定桌台进行点餐
- **菜品浏览**:按分类浏览菜品,支持搜索功能
- **购物车管理**:添加/删除菜品,修改数量
- **订单提交**:将购物车内容提交为正式订单
### 2. 订单状态跟踪
- **订单列表**:查看所有桌台的订单状态
- **实时更新**:通过Firebase推送获取订单状态变更
- **订单历史**:查看已完成订单记录
### 3. 产品管理
- **分类筛选**:按菜品分类筛选
- **产品搜索**:支持关键词搜索
- **产品详情**:查看菜品详细信息、价格、描述
### 4. 促销功能
- **优惠券应用**:支持输入优惠码
- **促销活动**:显示当前促销信息
## 核心代码分析
### 主入口 (main.dart)
```dart
// 应用入口,初始化GetX依赖注入
// 配置Firebase消息推送
// 设置URL策略(支持Web端)
// 初始化本地通知
```
### 状态管理
- 使用**GetX**进行状态管理
- 主要控制器:
- `ThemeController`:主题切换(暗黑/亮色模式)
- `LocalizationController`:多语言支持
- `ProductController`:产品数据管理
- `OrderController`:订单状态管理
- `CartController`:购物车管理
### API架构
- **ApiClient**:处理HTTP请求
- **ApiChecker**:API响应检查
- 支持分页加载(offset机制)
### UI组件
- **响应式设计**:支持平板和手机不同尺寸
- **自定义组件**:
- `CustomAppBar`:自定义导航栏
- `BodyTemplateWidget`:页面模板
- `ProductWidget`:产品卡片
- `CategoryWidget`:分类展示
- `FabCircularMenuWidget`:浮动圆形菜单
### 关键依赖
```yaml
dependencies:
get: ^4.7.3 # 状态管理
firebase_messaging: ^16.0.4 # 推送通知
shared_preferences: ^2.5.3 # 本地存储
cached_network_image: ^3.4.1 # 图片缓存
http: ^1.6.0 # HTTP请求
carousel_slider: ^5.1.1 # 轮播图
shimmer: ^3.0.0 # 加载骨架屏
```
## 应用版本信息
- **Table App版本**:2.3
- **兼容的User App版本**:11.7
- **兼容的Deliveryman App版本**:11.7
- **兼容的Kitchen App版本**:2.3
## 部署说明
1. 配置Firebase项目(用于推送通知)
2. 修改API基础URL配置
3. 配置应用主题和语言
4. 构建发布版本(Android/iOS/Web)