Files
MujicaUI/docs/components/099-notification-center.md
T
2026-10-05 12:19:28 -04:00

2.0 KiB
Raw Blame History

099 NotificationCenter 通知中心

用途

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

最小示例

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

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

参数

Notification:

字段 类型 默认值 含义
ID string 必填 列表内唯一;为空或重复时 panic。
Title string "" 标题,未读时加粗。
Body string "" 正文。
Time string "" 按原样显示的时间,如“5 min ago”。
Read bool false 是否已读。
Action string "" 操作按钮文字。

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

状态

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

事件

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

键盘操作

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

限制

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