Flutter中Widget的生命周期
在Flutter中,Widget的生命周期可以概括为以下几个阶段:
- 构建(Mounting):Widget对象被创建并添加到Flutter的渲染树中。
- 更新(Updating):Widget的属性或状态发生变化时,Widget会重新构建。
- 卸载(Unmounting):Widget从渲染树中移除。
具体实现这些阶段的方法如下:
createState()
:当Widget被添加到渲染树时被调用,此时可以执行一次性的初始化工作。build(BuildContext context)
:每当Widget的状态改变时,Flutter都会调用此方法来构建Widget。setState()
:用于标记Widget状态已改变,需要重新构建,通常在事件处理函数或异步回调中调用。deactivate()
:在Widget从渲染树中移除,但保留在内存中时调用。dispose()
:在Widget被永久移除并销毁时调用,此时可以执行清理工作。
示例代码:
class ExampleWidget extends StatefulWidget {
@override
_ExampleWidgetState createState() => _ExampleWidgetState();
}
class _ExampleWidgetState extends State<ExampleWidget> {
int _counter = 0;
@override
void initState() {
super.initState();
// 初始化工作
}
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Text('Counter: $_counter'),
RaisedButton(
onPressed: () => setState(() => _counter++),
child: Text('Increment'),
),
],
);
}
@override
void dispose() {
// 清理工作
super.dispose();
}
}
在这个例子中,_ExampleWidgetState
是一个有状态的Widget,它有一个内部状态_counter
,通过setState()
更新UI。initState()
在Widget首次挂载时调用,而dispose()
在Widget卸载时调用,用于清理资源。
评论已关闭