Class Widget
java.lang.Object
com.ultikits.ultitools.abstracts.gui.declarative.core.Widget
- Direct Known Subclasses:
Container,GridView,RenderObjectWidget,StatefulWidget,StatelessWidget
Widget 是声明式 UI 框架的核心抽象类。
Widget 是不可变的、轻量级的配置对象,用于描述 UI 的一部分。 每次状态变化都会创建新的 Widget 实例,但框架会通过 diff 算法高效地复用 Element。
核心理念:UI = f(state)
Widget 本身不包含任何可变状态,也不直接操作 Inventory。 它只负责描述"应该显示什么",而不管"如何显示"和"显示在哪里"。
子类类型:
StatelessWidget- 无状态 Widget,纯函数式,只依赖输入参数StatefulWidget- 有状态 Widget,可以响应 setState 重建RenderObjectWidget- 渲染 Widget,对应实际的 RenderNode
使用示例:
// 创建一个计数器 Widget
public class CounterWidget extends StatefulWidget {
@Override
public State createState() {
return new CounterState();
}
}
class CounterState extends State<CounterWidget> {
private int count = 0;
@Override
public Widget build(BuildContext context) {
return TextButton.builder()
.text("Count: " + count)
.onClick(() -> setState(() -> count++))
.build();
}
}
- Since:
- 6.2.0
- Version:
- 1.0.0
- Author:
- UltiTools Team
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
-
Field Details
-
key
可选的键,用于在列表中稳定标识此 Widget。当 Widget 在列表中时,应该提供一个稳定的 key 来帮助框架识别 哪些 Widget 是相同的,从而优化 diff 性能。
-
-
Constructor Details
-
Widget
protected Widget()创建一个新的 Widget 实例。 -
Widget
创建一个新的 Widget 实例,并指定 key。- Parameters:
key- 用于稳定标识此 Widget 的键
-
-
Method Details
-
getKey
获取此 Widget 的 key。- Returns:
- key,如果没有设置则返回 null
-
createElement
为此 Widget 创建对应的 Element。这是框架内部使用的方法,子类应该根据 Widget 类型返回适当的 Element 实现。
- StatelessWidget 返回
StatelessElement - StatefulWidget 返回
StatefulElement - RenderObjectWidget 返回
RenderObjectElement
- Returns:
- 对应的 Element 实例
- StatelessWidget 返回
-
canUpdate
检查此 Widget 是否可以更新给定的 Element。默认实现检查运行时类型是否相同。 子类可以重写此方法以提供自定义的更新逻辑。
- Parameters:
element- 要检查的 Element- Returns:
- 如果可以更新则返回 true
-
isSameWidget
检查两个 Widget 是否代表相同的配置。如果两个 Widget 的 key 相同且运行时类型相同,则认为它们是相同的 Widget。 这用于 diff 算法决定是否复用 Element。
- Parameters:
other- 另一个 Widget- Returns:
- 如果相同则返回 true
-
equals
-
hashCode
public int hashCode() -
toString
-