输入区(MessageInput)
输入区:MessageInput 是 IDL 定义的跨端 UI 组件,props / events / behaviors 在各平台语义一致。本页给出契约属性、事件、渲染行为、数据源与 Flutter 端绑定/示例。
契约属性(props)
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
draft | string | 是 | 草稿文本 |
disabled | bool | 是 | 是否禁用输入 |
muted | bool | 是 | 是否被禁言(禁言时禁用发送并提示) |
mentionCandidates | UserProfile[] | 否 | @ 候选成员列表 |
maxLength | int | 否 | 最大输入长度(默认 5000) |
事件
| 事件 | 参数 | 说明 |
|---|---|---|
send | text,extras? | 输入区发送文本 |
typing | bool | 输入状态变化(true / false) |
pickImage | — | 选择图片 |
pickFile | — | 选择文件 |
startRecord | — | 宿主回调(参数见 IDL 事件定义) |
pickLocation | — | 选择位置 |
draftChanged | draft | 草稿变化 |
渲染行为
- 输入时 500ms 防抖触发 typing(true),3s 无输入触发 typing(false)
- 被禁言(muted=true)禁用发送并提示;仍可查看
- 草稿自动保存(IMLib.saveTextMessageDraft),发送成功后清空
- 群聊支持 @ 选择器(全员/指定成员),生成 mentionedInfo
数据源
未在 IDL 声明 dataSource;由宿主从 IMLib 拉取(getConversationList / getHistoryMessages / MESSAGES / CONVERSATION 事件)。
依赖边界
组件不直连网络与数据库:会话/消息由宿主从 IMLib 拉取后传入,组件只做排序、角标、格式化与渲染。
平台绑定
| 项 | 值 |
|---|---|
| 公开符号 / 签名 | MessageInput(...) |
| 导出列表包含 | 是 |
| UI 框架 | Material Widget 组合;IMKit.start 提供默认主页,也可单独组合组件 |
使用示例
Dart (Flutter)
MessageInput(
draft: '',
disabled: false,
muted: false,
maxLength: 5000,
onSend: (text, {mentionedInfo}) => send(text),
onTyping: (typing) => onTyping(typing),
onDraftChanged: (draft) => saveDraft(draft),
)相关文档
- 功能列表:能力矩阵
- 组件 API:全部组件 props / events
- 主题定制
- 多语言与格式化
- Flutter IMLib:数据来源