视图
View::render 会在你调用 invalidate 或操作系统请求重绘后构建界面。使用 id,让行在多次 render 之间保持身份。
#视图如何工作
从 render 返回 impl IntoElement。窗口会休眠,直到 invalidate 或平台事件到来。
#条件内容
if self.expanded {
text("Expanded content")
} else {
text("Collapsed")
}省略某个分支会丢弃那些节点。
#列表
div().children(self.items.iter().map(|item| {
text(item.name.as_str()).id(item.id)
}))给有状态的行稳定的 id。长列表请使用 VirtualList 或 Table。
#窗口生命周期
每次 open_window 都拥有独立的 View。关闭一个窗口不会丢弃其他窗口。处理 Dock 图标时,如果 has_visible_windows 为 false,就打开新窗口。
#当前窗口
fn render(&mut self, cx: &mut ViewContext<'_, Self>) -> impl IntoElement {
let close = cx.listener("close", |_this, cx: &mut EventContext| {
let _ = cx.close_window();
});
button().on_click(close).child("Close")
}#测试
quickgui check
quickgui testexamples/base_ui_components.rs 是 UI 画廊。启用 inspector crate feature 可使用应用内检查器。
