8.9 KiB
8.9 KiB
App TouchGo 触控交互模块
模块概述
app_touchgo 是 OneApp 车联网生态中的触控交互模块,负责车辆的触控操作、手势识别、快捷操作等功能。该模块为用户提供直观便捷的车辆交互体验,通过手势和触控操作简化车辆控制流程。
基本信息
- 模块名称: app_touchgo
- 版本: 0.1.5
- 描述: 触控交互应用模块
- Flutter 版本: >=2.5.0
- Dart 版本: >=2.16.2 <4.0.0
功能特性
核心功能
-
触控交互
- 多点触控识别
- 手势操作识别
- 快捷操作设置
- 触控反馈优化
-
桌面小组件
- 车辆状态小组件
- 快捷控制小组件
- 信息展示小组件
- 自定义小组件
-
地理位置集成
- 基于位置的操作
- 地理围栏触发
- 位置相关提醒
- 地图触控交互
-
车辆服务集成
- 车辆控制接口
- 状态信息获取
- 服务调用优化
- 实时数据同步
技术架构
目录结构
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- 性能优化器
业务流程
手势识别流程
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
小组件更新流程
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
触控交互设计
手势类型
-
基础手势
- 单击:快速操作
- 双击:确认操作
- 长按:菜单操作
- 滑动:切换操作
-
复合手势
- 双指缩放:调整参数
- 三指滑动:切换模式
- 多指点击:组合操作
- 自定义手势:个性化操作
-
上下文手势
- 基于位置的手势
- 基于时间的手势
- 基于状态的手势
- 基于场景的手势
反馈机制
- 触觉反馈: 震动反馈
- 视觉反馈: 动画效果
- 听觉反馈: 提示音效
- 语音反馈: 语音确认
小组件设计
小组件类型
-
信息展示类
- 车辆状态展示
- 电池电量显示
- 位置信息显示
- 天气信息显示
-
快捷操作类
- 一键锁车/解锁
- 空调控制
- 充电控制
- 导航启动
-
监控类
- 安全状态监控
- 异常告警显示
- 维护提醒
- 服务通知
更新策略
- 实时更新: 关键状态信息
- 定时更新: 定期刷新数据
- 事件更新: 状态变化触发
- 手动更新: 用户主动刷新
安全特性
权限控制
- 触控操作权限验证
- 敏感功能授权检查
- 用户身份认证
- 操作审计记录
数据保护
- 触控数据加密存储
- 手势模式隐私保护
- 敏感操作二次确认
- 数据传输安全
性能优化
触控优化
- 触控事件去抖动
- 手势识别算法优化
- 响应时间优化
- 内存使用优化
小组件优化
- 数据缓存机制
- 增量更新策略
- 渲染性能优化
- 电池续航优化
扩展性设计
插件化架构
- 自定义手势插件
- 第三方小组件集成
- 扩展触控功能
- 自定义反馈机制
配置化管理
- 手势灵敏度配置
- 反馈强度设置
- 小组件布局配置
- 个性化定制
测试策略
单元测试
- 手势识别算法测试
- 触控事件处理测试
- 数据模型测试
- 工具类方法测试
集成测试
- 车辆服务集成测试
- 小组件功能测试
- 地理位置集成测试
- 完整交互流程测试
用户体验测试
- 手势响应速度测试
- 操作准确性测试
- 用户满意度测试
- 易用性评估
部署和维护
配置管理
- 手势库配置
- 小组件模板配置
- 性能参数调优
- 权限策略配置
监控指标
- 手势识别准确率
- 触控响应时间
- 小组件更新成功率
- 用户操作频率
总结
app_touchgo 模块作为 OneApp 的触控交互中心,为用户提供了直观便捷的车辆操作体验。通过先进的手势识别技术、丰富的桌面小组件和智能的触控反馈,用户可以更自然地与车辆进行交互。模块具有良好的扩展性和个性化能力,能够适应不同用户的使用习惯和需求。