Flutter 跨平台 AI 聊天客户端(Android + iOS + Web)。
后端服务位于 Project-S-backend。
| 模块 | 方案 |
|---|---|
| 框架 | Flutter 3.41+ / Dart 3.11+ |
| 状态管理 | Riverpod (flutter_riverpod) |
| HTTP | Dio |
| 实时通信 | WebSocket(流式消息 + 事件广播) |
| 通话 | WebRTC (flutter_webrtc) |
| 本地存储 | SQLite (sqflite) + flutter_secure_storage |
| 推送 | Firebase Cloud Messaging |
# 仓库仅包含 lib/ 源码和文档,平台配置需首次生成
# 1. 重新生成平台配置
flutter create --platforms=android,ios,web .
# 2. 配置 Android 权限(必须)
# 编辑 android/app/src/main/AndroidManifest.xml 添加:
# - RECORD_AUDIO(语音输入)
# - CAMERA(视频通话)
# - INTERNET(网络请求)
# 3. 安装依赖
flutter pub get
# 4. 构建 debug APK
flutter build apk --debug
# 5. 安装到设备
adb install -r build/app/outputs/flutter-apk/app-debug.apk
# 6. 启动
adb shell am start -n com.example.ai_chat_app/.MainActivityAPI 地址在 lib/core/constants/api_constants.dart 中配置。
lib/
├── main.dart / app.dart / router.dart
├── di.dart # 依赖注入
├── core/
│ ├── constants/ # API 地址
│ ├── services/ # ChatService(批处理/看门狗)
│ └── utils/ # 工具函数
├── data/
│ ├── local/ # DatabaseHelper + SecureStorage
│ ├── models/ # Message, RecentAIChat, AIUser 等
│ ├── repositories/ # API 调用封装
│ └── services/ # WebSocketService, EventService, PushService
└── presentation/
├── pages/ # 页面
├── providers/ # Riverpod Provider
└── widgets/ # 可复用组件
- 消息批处理:1.5s 冷却 / 4.5s 最大等待,合并发送
- 流式响应:WebSocket
stream_chunk→stream_message_done - 多设备同步:EventService 处理
message.sent/revoked/edited/deleted事件广播 - 断线重连:自动重连 + sync 拉取错失事件
- Conversation 全由服务端管理:客户端不维护 conversation 状态
WebSocket (wss://.../ws/connect)
├── auth (device_id + JWT)
├── ping/pong (心跳 + seq 确认)
├── stream_message_init → chunk → done (AI 流式回复)
├── event (message.sent / revoked / edited / deleted)
└── sync (断线后拉取错失事件)
HTTP POST (https://.../)
├── /chat (发送消息)
├── /aiusers/* (AI 角色 CRUD)
├── /sync (事件兜底同步)
└── /upload (文件上传)
| 页面 | 路由 | 说明 |
|---|---|---|
| 消息列表 | / |
最近聊天列表 |
| 聊天页 | /chat/:aiUserId |
消息列表 + 流式输入 + 文件/语音 |
| 通讯录 | /contacts |
AI 用户列表 |
| AI 详情 | /ai-user/:id |
角色详情 + 记忆库 |
| 设置 | /settings |
个人设置 |
| 通话 | /call |
WebRTC 语音/视频 |