Class StatefulWidget
java.lang.Object
com.ultikits.ultitools.abstracts.gui.declarative.core.Widget
com.ultikits.ultitools.abstracts.gui.declarative.core.StatefulWidget
- Direct Known Subclasses:
Navigator
StatefulWidget 是一个具有可变状态的 Widget。
它将 Widget 的配置(由构造函数参数决定)与状态(由 State 对象管理)分离。
当调用 State.setState(VoidCallback) 时,框架会安排重建,
使用新的 StatefulWidget 实例但保持相同的 State 对象。
适用场景:
- 需要用户交互的 UI(按钮点击、表单输入)
- 需要管理内部状态的 UI(展开/折叠、选中状态)
- 需要订阅外部数据源的 UI(实时数据更新)
生命周期:
State.initState()- 初始化状态,只调用一次State.build(BuildContext)- 构建 UI,可能调用多次State.didUpdateWidget(StatefulWidget)- 配置变化时调用State.dispose()- 清理资源,只调用一次
使用示例:
public class CounterButton extends StatefulWidget {
@Override
public State<CounterButton> createState() {
return new CounterState();
}
}
class CounterState extends State<CounterButton> {
private int count = 0;
@Override
void initState() {
super.initState();
// 初始化工作
}
@Override
Widget build(BuildContext context) {
return TextButton.builder()
.text("Clicked: " + count)
.onClick(() -> setState(() -> count++))
.build();
}
}
- Since:
- 6.2.0
- Version:
- 1.0.0
- Author:
- UltiTools Team
- See Also:
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected创建一个新的 StatefulWidget。protectedStatefulWidget(SlotKey key) 创建一个新的 StatefulWidget,指定 key。 -
Method Summary
Modifier and TypeMethodDescription@NotNull Element为此 Widget 创建对应的 Element。abstract @NotNull State<? extends StatefulWidget> 创建与此 Widget 关联的状态对象。
-
Constructor Details
-
StatefulWidget
protected StatefulWidget()创建一个新的 StatefulWidget。 -
StatefulWidget
创建一个新的 StatefulWidget,指定 key。- Parameters:
key- 用于稳定标识此 Widget 的键
-
-
Method Details
-
createState
创建与此 Widget 关联的状态对象。框架在首次插入 Widget 到树中时调用此方法。 同一个 State 对象会在 Widget 重建时复用。
- Returns:
- 新的 State 实例
-
createElement
Description copied from class:Widget为此 Widget 创建对应的 Element。这是框架内部使用的方法,子类应该根据 Widget 类型返回适当的 Element 实现。
- StatelessWidget 返回
StatelessElement - StatefulWidget 返回
StatefulElement - RenderObjectWidget 返回
RenderObjectElement
- Specified by:
createElementin classWidget- Returns:
- 对应的 Element 实例
- StatelessWidget 返回
-