# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 项目概述 这是一个 Flutter 插件项目,为 WCH CH34X 系列 USB 转串口芯片提供 Flutter 接口支持。支持的芯片型号:CH340/CH341/CH342/CH343/CH344/CH347/CH9101/CH9102/CH9103/CH9104/CH9143。 ## 常用命令 ```bash # 安装依赖 flutter pub get # 运行所有测试 flutter test # 运行单个测试文件 flutter test test/ch34_test.dart flutter test test/ch34_method_channel_test.dart # 代码分析(lint) flutter analyze # 格式化代码 dart format . # 构建示例 APK cd example && flutter build apk # 运行示例应用 cd example && flutter run ``` ## 代码架构 ### 目录结构 ``` lib/ ├── ch34.dart # 主入口,导出所有公共 API ├── ch34_method_channel.dart # 顶层导出(向后兼容) ├── ch34_platform_interface.dart # 顶层导出(向后兼容) └── src/ ├── ch34_manager.dart # 公共 API 管理器(静态方法门面) ├── ch34_platform_interface.dart # 抽象平台接口定义 ├── ch34_method_channel.dart # MethodChannel 实现 + 异常类 └── types/ └── ch34_types.dart # 所有类型和枚举定义 ``` ### 核心类 - **`Ch34Manager`** - 公共 API 入口,所有方法为静态,委托给 `Ch34Platform.instance` - **`Ch34Platform`** - 抽象平台接口,定义所有方法签名,继承自 `PlatformInterface` - **`MethodChannelCh34`** - 平台接口的具体实现,通过 MethodChannel 和 EventChannel 与 Android 原生端通信 - **`Ch34Exception`** - 插件自定义异常类 ### 通信通道 | 通道类型 | 名称 | 用途 | |---------|------|------| | MethodChannel | `ch34` | 双向方法调用 | | EventChannel | `ch34/data` | 串口数据推送 | | EventChannel | `ch34/modem` | Modem 状态变化 | | EventChannel | `ch34/usb_state` | USB 插拔状态 | ### Android 原生端 ``` android/src/main/java/com/example/ch34/ ├── Ch34Plugin.java # Flutter 插件主类,注册 MethodChannel/EventChannel ├── Ch34DataStreamHandler.java # 数据 EventChannel 的 StreamHandler ├── Ch34ModemStreamHandler.java # Modem EventChannel 的 StreamHandler ├── Ch34UsbStateStreamHandler.java # USB 状态 EventChannel 的 StreamHandler └── Ch34TypeConverter.java # Dart/Java 类型转换工具 ``` ### 数据流 ``` Flutter App → Ch34Manager → Ch34Platform.instance → MethodChannelCh34 → MethodChannel → Android (Ch34Plugin) ``` ### 类型系统 (`ch34_types.dart`) - **枚举**: `DataBits`, `StopBits`, `Parity`, `GpioDirection`, `GpioValue`, `SerialErrorType` - **数据类**: `GpioStatus`, `SerialParameter`, `ChipMasterFrequency`, `ModemStatus`, `UsbDeviceInfo` - 所有数据类提供 `fromMap`/`toMap` 方法用于平台间序列化 ## 测试策略 - `test/ch34_test.dart` - 使用 Mock 平台实例测试 `Ch34Manager` 接口 - `test/ch34_method_channel_test.dart` - 使用 BinaryMessenger 模拟测试 MethodChannel 调用 - 测试遵循 flutter plugin 的标准测试模式 ## 示例应用 `example/` 目录包含完整的示例应用,展示设备扫描、打开、数据发送/接收的基本流程。 ## 用户约束 - Flutter 项目中禁止使用 `Get.snackbar`,使用 `easyloading` 代替 - 所有方法需添加方法级注释 - 遵循高内聚低耦合设计原则