Flutter 中 stateless 和 stateful widget 的区别[Flutter专题60]
在Flutter中,widget可以分为有状态的和无状态的。
**无状态widget(StatelessWidget)**是指那些在widget树的生命周期内不会改变的widget。这意味着它们不会保持任何内部状态。当这些widget的属性不改变时,Flutter不会重新调用build方法。无状态widget的一个好处是它们更简单、更轻量,因为它们不需要管理一个内部状态。
**有状态widget(StatefulWidget)**则相反,它们在widget树的生命周期内可以改变。当有状态widget的状态发生改变时,Flutter会调用其State
对象的build
方法来更新UI。
下面是一个无状态和有状态widget的简单示例:
// 无状态Widget示例
class StatelessCounter extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text('You have pushed the button this many times:');
}
}
// 有状态Widget示例
class StatefulCounter extends StatefulWidget {
@override
_StatefulCounterState createState() => _StatefulCounterState();
}
class _StatefulCounterState extends State<StatefulCounter> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('You have pushed the button this many times:'),
Text('$_counter'),
RaisedButton(
onPressed: _incrementCounter,
child: Text('Increment'),
),
],
);
}
}
在这个例子中,StatelessCounter
是一个无状态widget,它总是显示相同的文本。而StatefulCounter
是有状态的,它包含一个计数器,通过点击按钮来增加计数,并更新UI显示当前计数。
评论已关闭