StatefulWidget
在 Flutter 中,Widget 分为两种类型:StatelessWidget 和 StatefulWidget。
StatelessWidget 是不可变的,一旦构建就不能再次修改,常用于展示静态内容。
StatefulWidget 可以根据用户交互、数据变化等因素重新构建并更新界面,常用于显示动态内容。
StatefulWidget 由两个类组成:StatefulWidget 和 State。
StatefulWidget 是一个不可变的 Widget,只包含一些不可变的配置信息,不包含状态信息。
State 是可变的,继承自 StatefulWidget 的 State 类需要自己维护自己的状态信息,并根据状态信息重新构建和更新 Widget。
下面是一个简单的 StatefulWidget 示例:
class CounterWidget extends StatefulWidget {
@override
_CounterWidgetState createState() => _CounterWidgetState();
}
class _CounterWidgetState extends State<CounterWidget> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Counter: $_counter'),
ElevatedButton(
onPressed: _incrementCounter,
child: Text('Increment'),
),
],
);
}
}
在这个例子中,CounterWidget 是一个 StatefulWidget,它包含了一个 _CounterWidgetState 类。 _CounterWidgetState 是 CounterWidget 的状态类,它维护了一个 int 类型的计数器 _counter,当用户点击按钮时,_incrementCounter 方法会增加计数器的值,并调用 setState() 方法通知 Flutter 框架需要更新界面。
build 方法返回一个 Column Widget,包含了一个显示计数器值的 Text Widget 和一个用于增加计数器值的 ElevatedButton Widget。
以上就是 StatefulWidget 的基本使用方法和原理。在实际开发中,可以使用 StatefulWidget 来维护界面状态,实现动态内容的更新和交互。