MujicaUI

Feedback · #099

NotificationCenter 浅色主题渲染快照
浅色 · 渲染快照
NotificationCenter 深色主题渲染快照
深色 · 渲染快照

099 NotificationCenter 通知中心

用途

应用内消息列表:未读标记、已读/未读切换、单条清除、全部已读、全部清除和每条消息的操作。消息列表与持久化由调用方持有;组件就地修改调用方的切片,并报告发生了什么,供调用方保存。

最小示例

r := feedback.NotificationCenter(c, &items, feedback.NotificationCenterOptions{})
if r.Action == "a" {
	// open the build log
}

签名:func NotificationCenter(c *ui.Context, items *[]Notification, opts NotificationCenterOptions) NotificationCenterResult

参数

Notification:

字段类型默认值含义
IDstring必填列表内唯一;为空或重复时 panic。
Titlestring""标题,未读时加粗。
Bodystring""正文。
Timestring""按原样显示的时间,如“5 min ago”。
Readboolfalse是否已读。
Actionstring""操作按钮文字。

NotificationCenterOptions.Title:面板标题,默认“Notifications / 通知”。items 为 nil 时 panic。

状态

  • 未读:左侧酒红菱形、粗体标题、无障碍名称前缀“Unread”。
  • 行悬停加浅底;按钮有悬停、按下与焦点状态;无未读或无消息时头部按钮禁用。
  • 空列表显示 EmptyState。
  • 面板标题下为旧金细线。列表超出容器高度时滚动。

事件

NotificationCenterResult:Action、Toggled(已读状态切换)、Opened(点击正文后标为已读)、Removed 为对应 ID;MarkedAllRead、ClearedAll 为布尔值。

键盘操作

列表是一个 Tab 停靠点;方向键在各条消息及其按钮之间移动,Home/End 到首尾。焦点在消息正文上时 Enter 或 Space 标为已读;Delete 或 Backspace 清除当前消息。

限制

  • 不分页,也不虚拟化;面向几十到几百条的应用内消息。
  • 时间文字由调用方格式化。