Flutter中的StatefulWidget简单介绍

181 阅读1分钟

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 来维护界面状态,实现动态内容的更新和交互。