FoxTalk
文档/SDK 分层

SDK 分层

FoxTalk 客户端用三层架构: UI 层只渲染状态, 业务逻辑收在应用层 service, 底层 SDK 负责协议与本地 DB。这套划分跟原版 iOS 一致, 便于跨端比对。

三层职责一览:

UI 层
widget / page / 导航 / 动效。只读取应用层数据, 不持有业务状态。
应用层
业务模型 / service / 本地缓存 / KV 持久化。是 UI 与 SDK 之间唯一桥梁。
IM SDK 层
TCP / WebSocket 连接 / 协议编解码 / SQLite 本地 DB (wukongimfluttersdk)。

UI 不直接调 SDK

UI 层不允许直接 import wukongimfluttersdk, 必须通过应用层 service。这条规则换来两个直接好处:

  • 测试好做: service 可以塞 mock, widget test 不用起真 IM 连接。
  • 协议可换: WuKongIM 之外接其他 IM 协议时只动 service 实现, UI 完全不动。
例: chat_screen_page 拉历史消息走 WukongImService.loadMessages(channelId, channelType, limit, beforeSeq), 不直接调 WKIM.shared.messageManager。

应用层的三种角色

应用层不是单一文件, 是三类协作角色:

Gateway
对外暴露的接口 (例: ChatImGateway / ChatSocialGateway), 给 UI 层用。
Service
Gateway 的实现, 持有内存缓存与 stream broadcast (例: WukongImService)。
Repository / DAO
应用层持久化 (例: lib/src/db/friend_request_db.dart), 给 service 调。

IM SDK 层职责

wukongimfluttersdk 持有 IM 协议长连接与本地 SQLite。base 工程通过 WKIM.shared.* 调用, 但只在应用层 service 内部触达, UI 层接触不到:

  • WKIM.shared.conversationManager — 会话列表本地表
  • WKIM.shared.channelManager — 频道 / 群 / 个人资料本地表
  • WKIM.shared.messageManager — 消息历史本地表 + 翻页
  • WKIM.shared.channelMembersManager — 群成员本地表
  • WKIM.shared.cmdManager — 业务 CMD push (置顶 / 朋友圈通知 / RTC 等)
last updated · 2026-06