MessageManager class
消息管理器,仿照 OpenIM MessageManager。
历史:拉后端 → 写缓存(不广播)→ 查缓存 → UI merge。
首屏与上拉同一套 getHistoryMessageList,只差 cursor。
发送:先写本地 sending → WS ACK → 更新本地 success
Constructors
- MessageManager(ConversationManager _conversationManager)
Properties
- advancedMsgListener → OnAdvancedMsgListener?
-
no setter
- canSend → bool
-
是否当前可发送(UI 可用此禁用发送按钮)
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- mediaPolicy → MediaPolicy
-
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
assertCanSend(
) → void - 发送前置检查:无网 / WS 未连接时立即失败(不等待 ACK 超时)
-
bindWsEvents(
) → void - 由 IMManager 在 login 后绑定 WS 事件
-
createCardMessage(
{required int talkMode, required int toFromId, required int userId}) → Message -
createCodeMessage(
{required int talkMode, required int toFromId, required String code, required String lang}) → Message -
createFileMessage(
{required int talkMode, required int toFromId, required String uploadId}) → Message -
大文件消息:分片上传完成后,WS body 仅带
uploadId(对齐 Web)。 -
createImageMessage(
{required int talkMode, required int toFromId, required String url, required int width, required int height, required int size, String? name}) → Message -
createLocationMessage(
{required int talkMode, required int toFromId, required double latitude, required double longitude, String description = ''}) → Message -
createMiniProgramMessage(
{required int talkMode, required int toFromId, required String content, String? toolName, bool flashRead = false, String? quoteMsgId}) → Message -
创建小程序消息(msg_type=14)。
flashRead为 true 时服务端按闪阅处理(需flash_read.auto_recall_seconds>0);也可在contentJSON 中带openType=browser。 -
createTextMessage(
{required int talkMode, required int toFromId, required String content, List< int> ? mentions, String? quoteMsgId}) → Message -
createVideoMessage(
{required int talkMode, required int toFromId, required String url, required String cover, required int duration, required int size}) → Message -
createVoiceMessage(
{required int talkMode, required int toFromId, required String url, required int duration, required int size}) → Message -
deleteMessageFromLocalAndSvr(
{required int talkMode, required int toFromId, required List< String> msgIds}) → Future<void> -
fetchPeerReadState(
{required int talkMode, required int toFromId}) → Future< MessageRead?> - 回填对端已读水位(打开私聊时调用)。
-
getHistoryMessageList(
{required int talkMode, required int toFromId, String cursor = '0', int count = 10, bool reportRead = false}) → Future< MessageListResult> - 统一历史入口(cache-first):
-
getHistoryMessageListByType(
{required int talkMode, required int toFromId, required int msgType, String cursor = '0', int count = 100}) → Future< MessageListResult> - 按类型过滤历史(HTTP → 写库);仍建议 UI 随后从本地读。
-
getPendingMessages(
{required int talkMode, required int toFromId}) → Future< List< Message> > - 查询本地发送中 / 失败消息
-
markMessagesAsRead(
{required int talkMode, required int toFromId, required String msgId}) → Future< void> -
上报私聊已读水位(本端 inbox 的
msgId)。仅 TalkMode.private。 -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
peerReadSeq(
{required int talkMode, required int toFromId}) → int -
resendMessage(
Message message, {Duration? timeout}) → Future< Message> - 重试本地 failed / sending 消息
-
resendPendingMessages(
{required int talkMode, required int toFromId}) → Future< void> - 批量重试本会话 pending
-
resolveDisplayMediaUrl(
Message msg) → String? - 按策略解析展示用媒体 URL(蜂窝优先缩略图)
-
revokeMessage(
{required int talkMode, required int toFromId, required String msgId}) → Future< void> -
sendMessage(
Message message, {Duration? timeout}) → Future< Message> - 通过 WebSocket 发送消息,等待服务端 ACK。 发送前写入本地(status=发送中),成功后标记 status=0。
-
setAdvancedMsgListener(
OnAdvancedMsgListener listener) → void -
shouldAutoDownload(
Message msg) → bool - 是否应按当前流量策略自动下载该消息媒体
-
toString(
) → String -
A string representation of this object.
inherited
-
typing(
int toFromId) → Future< void> - 发送「正在输入」
-
unbindWsEvents(
) → void -
uploadImageHints(
{bool preferOriginal = false}) → ({bool compress, int jpegQuality, MediaQuality quality}) - 当前网络建议的图片上传质量 / JPEG 压缩参数
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited