Files
oneapp_docs/app_car/app_touchgo.md
2025-09-24 14:08:54 +08:00

381 lines
8.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# App TouchGo 触控交互模块
## 模块概述
`app_touchgo` 是 OneApp 车联网生态中的触控交互模块,负责车辆的触控操作、手势识别、快捷操作等功能。该模块为用户提供直观便捷的车辆交互体验,通过手势和触控操作简化车辆控制流程。
### 基本信息
- **模块名称**: app_touchgo
- **版本**: 0.1.5
- **描述**: 触控交互应用模块
- **Flutter 版本**: >=2.5.0
- **Dart 版本**: >=2.16.2 <4.0.0
## 功能特性
### 核心功能
1. **触控交互**
- 多点触控识别
- 手势操作识别
- 快捷操作设置
- 触控反馈优化
2. **桌面小组件**
- 车辆状态小组件
- 快捷控制小组件
- 信息展示小组件
- 自定义小组件
3. **地理位置集成**
- 基于位置的操作
- 地理围栏触发
- 位置相关提醒
- 地图触控交互
4. **车辆服务集成**
- 车辆控制接口
- 状态信息获取
- 服务调用优化
- 实时数据同步
## 技术架构
### 目录结构
```
lib/
├── app_touchgo.dart # 模块入口文件
├── src/ # 源代码目录
│ ├── gestures/ # 手势识别
│ ├── widgets/ # 桌面小组件
│ ├── controllers/ # 控制器
│ ├── services/ # 服务层
│ ├── pages/ # 页面组件
│ ├── models/ # 数据模型
│ └── utils/ # 工具类
├── generated/ # 代码生成文件
└── l10n/ # 国际化文件
```
### 依赖关系
#### 核心依赖
- `basic_modular: ^0.2.3` - 模块化框架
- `basic_modular_route: ^0.2.1` - 路由管理
- `basic_intl_flutter: ^0.2.2+1` - 国际化Flutter支持
- `basic_intl: ^0.2.0` - 国际化基础
- `basic_logger: ^0.2.2` - 日志系统
#### 业务依赖
- `ui_basic: ^0.2.17` - 基础UI组件
- `car_services: ^0.6.1` - 车辆服务
- `car_vehicle: ^0.6.4+1` - 车辆控制
- `clr_geo: ^0.2.16+1` - 地理位置服务
- `clr_touchgo: ^0.1.3` - 触控服务SDK
#### 第三方依赖
- `json_annotation: ^4.8.1` - JSON序列化
- `dartz: ^0.10.1` - 函数式编程
- `home_widget: ^0.6.0` - 桌面小组件
- `amap_flutter_base: ^3.0.4` - 高德地图基础
- `amap_flutter_search: ^0.0.17` - 高德地图搜索
## 核心模块分析
### 1. 模块入口 (`app_touchgo.dart`)
**功能职责**:
- 模块对外接口统一导出
- 触控服务初始化
- 手势识别引擎启动
### 2. 手势识别 (`src/gestures/`)
**功能职责**:
- 多点触控处理
- 手势模式识别
- 自定义手势定义
- 手势事件分发
**主要组件**:
- `GestureDetector` - 手势检测器
- `TouchProcessor` - 触控处理器
- `GestureRecognizer` - 手势识别器
- `CustomGestureBuilder` - 自定义手势构建器
**支持的手势类型**:
- 单击/双击
- 长按操作
- 滑动手势
- 缩放手势
- 旋转手势
- 多指操作
### 3. 桌面小组件 (`src/widgets/`)
**功能职责**:
- 原生桌面小组件
- 车辆信息展示
- 快捷操作入口
- 实时数据更新
**主要小组件**:
- `VehicleStatusWidget` - 车辆状态小组件
- `QuickControlWidget` - 快捷控制小组件
- `LocationWidget` - 位置信息小组件
- `BatteryWidget` - 电池状态小组件
### 4. 控制器 (`src/controllers/`)
**功能职责**:
- 触控事件处理
- 车辆操作控制
- 状态管理协调
- 数据流控制
**主要控制器**:
- `TouchController` - 触控控制器
- `VehicleController` - 车辆控制器
- `WidgetController` - 小组件控制器
- `GestureController` - 手势控制器
### 5. 服务层 (`src/services/`)
**功能职责**:
- 车辆服务接口
- 地理位置服务
- 小组件数据服务
- 触控数据处理
**主要服务**:
- `VehicleService` - 车辆服务
- `LocationService` - 位置服务
- `WidgetDataService` - 小组件数据服务
- `TouchDataService` - 触控数据服务
### 6. 页面组件 (`src/pages/`)
**功能职责**:
- 用户界面展示
- 交互配置页面
- 手势设置页面
- 小组件管理页面
**主要页面**:
- `TouchGoHomePage` - 触控主页
- `GestureConfigPage` - 手势配置页
- `WidgetManagementPage` - 小组件管理页
- `TouchSettingsPage` - 触控设置页
### 7. 数据模型 (`src/models/`)
**功能职责**:
- 触控数据模型
- 手势配置模型
- 小组件数据模型
- 车辆状态模型
**主要模型**:
- `TouchEvent` - 触控事件模型
- `GestureConfig` - 手势配置模型
- `WidgetData` - 小组件数据模型
- `VehicleStatus` - 车辆状态模型
### 8. 工具类 (`src/utils/`)
**功能职责**:
- 触控工具方法
- 手势计算工具
- 数据转换工具
- 性能优化工具
**主要工具**:
- `TouchCalculator` - 触控计算器
- `GestureAnalyzer` - 手势分析器
- `WidgetRenderer` - 小组件渲染器
- `PerformanceOptimizer` - 性能优化器
## 业务流程
### 手势识别流程
```mermaid
graph TD
A[接收触控事件] --> B[预处理触控数据]
B --> C[分析触控模式]
C --> D{是否为已知手势}
D -->|是| E[匹配手势类型]
D -->|否| F[记录未知模式]
E --> G[执行对应操作]
G --> H[提供触觉反馈]
H --> I[记录操作日志]
F --> J[学习新手势]
J --> K{是否需要用户确认}
K -->|是| L[请求用户确认]
K -->|否| M[自动学习]
L --> N{用户是否确认}
N -->|是| O[保存新手势]
N -->|否| P[丢弃手势]
M --> O
O --> Q[更新手势库]
P --> R[结束处理]
I --> R
Q --> R
```
### 小组件更新流程
```mermaid
graph TD
A[数据变化事件] --> B[检查小组件订阅]
B --> C{是否有订阅小组件}
C -->|是| D[获取最新数据]
C -->|否| E[忽略更新]
D --> F[格式化数据]
F --> G[渲染小组件]
G --> H[更新系统桌面]
H --> I[验证更新结果]
I --> J{更新是否成功}
J -->|是| K[记录成功日志]
J -->|否| L[执行重试机制]
L --> M{重试次数是否超限}
M -->|是| N[记录失败日志]
M -->|否| G
K --> O[通知订阅者]
N --> P[发送错误报告]
O --> Q[结束更新]
P --> Q
E --> Q
```
## 触控交互设计
### 手势类型
1. **基础手势**
- 单击快速操作
- 双击确认操作
- 长按菜单操作
- 滑动切换操作
2. **复合手势**
- 双指缩放调整参数
- 三指滑动切换模式
- 多指点击组合操作
- 自定义手势个性化操作
3. **上下文手势**
- 基于位置的手势
- 基于时间的手势
- 基于状态的手势
- 基于场景的手势
### 反馈机制
- **触觉反馈**: 震动反馈
- **视觉反馈**: 动画效果
- **听觉反馈**: 提示音效
- **语音反馈**: 语音确认
## 小组件设计
### 小组件类型
1. **信息展示类**
- 车辆状态展示
- 电池电量显示
- 位置信息显示
- 天气信息显示
2. **快捷操作类**
- 一键锁车/解锁
- 空调控制
- 充电控制
- 导航启动
3. **监控类**
- 安全状态监控
- 异常告警显示
- 维护提醒
- 服务通知
### 更新策略
- **实时更新**: 关键状态信息
- **定时更新**: 定期刷新数据
- **事件更新**: 状态变化触发
- **手动更新**: 用户主动刷新
## 安全特性
### 权限控制
- 触控操作权限验证
- 敏感功能授权检查
- 用户身份认证
- 操作审计记录
### 数据保护
- 触控数据加密存储
- 手势模式隐私保护
- 敏感操作二次确认
- 数据传输安全
## 性能优化
### 触控优化
- 触控事件去抖动
- 手势识别算法优化
- 响应时间优化
- 内存使用优化
### 小组件优化
- 数据缓存机制
- 增量更新策略
- 渲染性能优化
- 电池续航优化
## 扩展性设计
### 插件化架构
- 自定义手势插件
- 第三方小组件集成
- 扩展触控功能
- 自定义反馈机制
### 配置化管理
- 手势灵敏度配置
- 反馈强度设置
- 小组件布局配置
- 个性化定制
## 测试策略
### 单元测试
- 手势识别算法测试
- 触控事件处理测试
- 数据模型测试
- 工具类方法测试
### 集成测试
- 车辆服务集成测试
- 小组件功能测试
- 地理位置集成测试
- 完整交互流程测试
### 用户体验测试
- 手势响应速度测试
- 操作准确性测试
- 用户满意度测试
- 易用性评估
## 部署和维护
### 配置管理
- 手势库配置
- 小组件模板配置
- 性能参数调优
- 权限策略配置
### 监控指标
- 手势识别准确率
- 触控响应时间
- 小组件更新成功率
- 用户操作频率
## 总结
`app_touchgo` 模块作为 OneApp 的触控交互中心为用户提供了直观便捷的车辆操作体验通过先进的手势识别技术丰富的桌面小组件和智能的触控反馈用户可以更自然地与车辆进行交互模块具有良好的扩展性和个性化能力能够适应不同用户的使用习惯和需求