外观
树
ui.Tree 创建一棵树,其项由 ui.TreeItem 构建,每项嵌在其所属项之内。当某项的 *bool 为 true 时显示其子项;点击其箭头展开或收起,Clicked 报告点击它的其他部位或按 Enter,用于选择它,由 Selected 显示选中状态。
go
item := func(path, label string, open *bool, children func()) {
if ui.TreeItem(c, label, open, children).Selected(app.chosen == path).Clicked() {
app.chosen = path
}
}
ui.Tree(c, func() {
item("src", "src", &app.srcOpen, func() {
item("src/main.go", "main.go", nil, nil)
})
item("go.mod", "go.mod", nil, nil)
})children 为 nil,或 open 为 nil,就是叶子节点。
键盘
项拥有键盘焦点时,Up 和 Down 在相邻项之间移动,Right 展开该项或移到其第一个子项,Left 收起该项或移到其父项。
树会构建它显示的每一个项。对于上千项的树,或带列的树,请使用大纲,它只构建可见的行。
无障碍
辅助技术看到的是一棵项组成的树,每项带有自己的层级,有子项时带有展开或收起状态。