42 lines
1.4 KiB
Markdown
42 lines
1.4 KiB
Markdown
# 402 ChatMessage 聊天消息
|
||
|
||
## 用途
|
||
|
||
展示连续聊天消息、发送时间、编辑标记,以及调用方提供的回复和回应插槽。
|
||
|
||
## 最小示例
|
||
|
||
```go
|
||
prev := messaging.ChatEntry{ID: "1", Author: "Uika", Time: time.Now(), Text: "Rehearsal at nine."}
|
||
m := messaging.ChatEntry{ID: "2", Author: "Uika", Time: time.Now(), Text: "Bring the masks.", Edited: true}
|
||
view := func(c *ui.Context) {
|
||
core.Use(c, core.Settings{})
|
||
messaging.ChatMessage(c, prev, messaging.ChatMessageOptions{})
|
||
messaging.ChatMessage(c, m, messaging.ChatMessageOptions{
|
||
Continued: messaging.ChatContinues(prev, m),
|
||
Reactions: func() { display.Tag(c, "👍 2", display.TagOptions{}) },
|
||
})
|
||
}
|
||
ui.Render(view, 400, 300, 1)
|
||
```
|
||
|
||
## 参数
|
||
|
||
`ChatEntry` 包含 `ID`、必填的 `Author`、`Image`、`Time`、`Text`、`Edited`、`Own`。`ChatMessageOptions.Continued` 默认 false;`Reply` 与 `Reactions` 为可选插槽。`ChatContinues(prev, cur)` 要求同一作者、相同 Own、间隔非负且小于五分钟。
|
||
|
||
## 状态
|
||
|
||
状态由调用方数据控制;浅深主题、密度与文字缩放随窗口设置变化。适用插槽操作沿用控件焦点和禁用状态。
|
||
|
||
## 事件
|
||
|
||
插槽中的按钮、链接和回应事件由调用方处理。
|
||
|
||
## 键盘操作
|
||
|
||
可选文字支持选择复制;插槽控件按 Tab 访问。
|
||
|
||
## 限制
|
||
|
||
调用方计算 Continued 或使用 ChatContinues;回复与回应的业务逻辑在插槽中实现。
|