Flutter Widget:StatefulWidget&StatelessWidget&State
在Flutter中,Widget是用户界面的基本构建块。根据其状态是否可以改变,Widget可以分为有状态的(StatefulWidget)和无状态的(StatelessWidget)。StatefulWidgets拥有内部可以改变的状态,而StatelessWidgets在创建后状态就不再改变。
State对象用于维护StatelessWidget的状态,当State对象的setState方法被调用时,Flutter会重新调用build方法来更新UI。
以下是一个简单的例子,展示了如何创建一个有状态的Widget:
class StatefulWidgetExample extends StatefulWidget {
@override
_StatefulWidgetExampleState createState() => _StatefulWidgetExampleState();
}
class _StatefulWidgetExampleState extends State<StatefulWidgetExample> {
int counter = 0;
void incrementCounter() {
setState(() {
counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Text('Counter: $counter'),
RaisedButton(
onPressed: incrementCounter,
child: Text('Increment'),
),
],
);
}
}
在这个例子中,StatefulWidgetExample
是一个有状态的Widget,它有一个状态变量counter
。incrementCounter
方法通过调用setState
方法来更新counter
,Flutter会在setState
调用后重新调用build
方法来更新UI。
而对于无状态的Widget,它不会有自己的State对象,也不会在内部状态改变时需要重新构建:
class StatelessWidgetExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text('This is a stateless widget.');
}
}
在这个例子中,StatelessWidgetExample
是一个无状态的Widget,它只是简单地显示一段文本,并且这段文本不会随着任何内部状态的改变而改变。
评论已关闭