标题
在 Flutter 客户端实现完整的聊天模块:支持单聊 & 群聊,支持图片/文件发送
简述
为 Flutter 客户端实现一个可用、稳定的聊天模块,支持单聊与群聊场景;消息类型至少包含:文本、图片、文件。包括消息发送/接收、上传/下载、离线/重试、消息列表、查看大图/下载附件、消息状态(发送中/已发送/已送达/已读)等功能。
目标
- 支持单聊(1:1)与群聊(多用户)基本功能。
- 支持发送与接收:文本、图片(含缩略图)、文件(任意类型)。
- 支持消息状态、离线缓存、断点续传/重试和进度展示。
- 用户体验要流畅:图片压缩、预览、占位、发送占位符、失败重发。
- 与后端协议兼容(WS+REST 上传/下载或指定接口),并满足基本安全策略(鉴权、签名/短期 URL)。
功能需求(核心)
- 会话列表:显示最近会话、未读计数、最后一条消息预览。
- 聊天界面:
- 文本输入(支持换行、表情/@群成员可选)。
- 发送/接收文本消息。
- 选择/拍照并发送图片:显示缩略图、上传进度、大图预览,可保存到相册。
- 发送文件(任意类型):显示文件名、大小、上传/下载进度、打开/保存文件。
- 消息气泡显示时间、发送者(群聊)、消息状态(正在发送/失败/已发送/已读)。
- 长按消息可复制/删除/转发/重发/下载附件。
- 附件处理:
- 本地压缩图片(可配置压缩质量/尺寸)。
- 上传前生成缩略图并先展示本地占位图,上传完成替换为服务器 URL。
- 大文件支持分片上传或断点续传(后端支持时启用)。
- 离线与重试:
- 发送队列:网络不可用时队列化并在重新连上后自动重试(指数退避)。
- 本地持久化消息(SQLite / sembast / hive),打开会话加载历史并合并服务端数据。
- 实时同步:
- 优先使用 WebSocket(或其它长连接)接收推送,支持消息回执(ack、delivery、read)。
- 支持拉取历史(分页)与消息去重(messageId 去重)。
- 权限/安全:
- 所有上传/下载需要有效鉴权(JWT / signed URL)。
- 附件 URL 为短期有效或需要后端鉴权转发下载。
- 国际化(i18n)与无障碍(可选)。
标题
在 Flutter 客户端实现完整的聊天模块:支持单聊 & 群聊,支持图片/文件发送
简述
为 Flutter 客户端实现一个可用、稳定的聊天模块,支持单聊与群聊场景;消息类型至少包含:文本、图片、文件。包括消息发送/接收、上传/下载、离线/重试、消息列表、查看大图/下载附件、消息状态(发送中/已发送/已送达/已读)等功能。
目标
功能需求(核心)