不依赖 "DSL" 使用 Ribir
无论是为了更直观的调试,还是为了让代码更具 Rust 风格,你可能会选择不使用 Ribir 的 "DSL"。
这并无问题,得益于 Ribir 在设计初期就将 "DSL" 定位为一个轻量级的语法转换层,你完全可以直接使用 Ribir 的 API 来构建 UI。甚至在一个代码片段中,你可以选择部分使用 API,部分使用宏,两者交织在一起使用。一切都将简单而自然。
核心概念
在 Ribir 中:
- 视图是由 widget 作为基本单位构建的。
- widget 之间通过纯组合方式组成新的 widget。
因此,通过 API 构建 UI 主要涉及两个关键点:
- 如何创建 widget
- 如何组合子 widget
通过 API 创建 widget
以 FilledButton 控件为例,其定义如下:
use ribir::prelude::*;
struct FilledButton {
color: Color
}
这与常规的 Rust 结构体无异,你可以直接创建一个对象:
use ribir::prelude::*;
let button = FilledButton { color: Color::RED };
这样,你就得到了一个红色的按钮。