211 AudioMessage 语音消息
用途
语音条:播放/暂停按钮、波形、播放进度与时长。播放由调用方驱动:组件只报告播放切换与跳转请求,调用方更新 Position 与 Playing。波形基于 MyGo ui.SliderBase,可拖动与键盘跳转。
最小示例
r := chat.AudioMessage(c, chat.AudioMessageOptions{Duration: time.Minute, Position: pos})
if d, ok := r.Seek(); ok {
pos = d
}签名:func AudioMessage(c *ui.Context, opts AudioMessageOptions) AudioMessageResult
参数
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
Duration | time.Duration | 必填 | 时长,必须大于 0。 |
Position | time.Duration | 0 | 当前进度,0 到 Duration 之间,否则 panic。 |
Playing | bool | false | 按钮显示暂停(播放中)或播放。 |
Waveform | []float32 | nil | 0 到 1 的响度采样,按宽度重采样为竖条;为空画平线;越界 panic。 |
状态
已播放的竖条为 AccentText,未播放为半透明 TextMuted,当前位置另有一条竖线,进度不只靠颜色表达;右侧显示 m:ss / m:ss。
事件
Toggled():按下播放或暂停。Seek():点击、拖动或按键请求的新位置。
键盘操作
Tab 到播放按钮(Enter 或 Space)与波形;波形上 Left/Right(Up/Down)按时长的 1% 移动,Home、End 到开头与结尾。
限制
- 不解码音频、不生成波形:采样由调用方提供。

