flutter 的生命周期

69 阅读1分钟

flutter 的生命周期

StatefulWidget 的生命周期方法:

  • createState 创建与 StatefulWidget 相关联的 State 对象。
dartCopy codeclass MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}
​

State 对象的生命周期方法:

  • initStateState 对象被插入树中时调用,这个方法只会被调用一次。
  • didChangeDependenciesinitState 之后调用,表示 State 对象的依赖关系发生变化。
  • build 构建 Widget 树的主要方法。
  • didUpdateWidget 当父 Widget 重建时调用。如果父 Widget 重建时需要重新配置子 Widget,则会调用此方法。
  • deactivateState 对象从树中被移除时调用。在这之后,State 对象可能会被重新插入树中。
  • activate:当State 对象被重新插入树中 时调用,一般不会使用
  • disposeState 对象被永久从树中移除时调用。通常在这里释放资源。
dartCopy codeclass _MyWidgetState extends State<MyWidget> {
  @override
  void initState() {
    super.initState();
    // 在此执行初始化操作
  }
​
  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    // 在此处理依赖关系变化
  }
​
  @override
  Widget build(BuildContext context) {
    // 在此构建 Widget 树
    return Container();
  }
​
  @override
  void didUpdateWidget(MyWidget oldWidget) {
    super.didUpdateWidget(oldWidget);
    // 在此处理 Widget 更新
  }
​
  @override
  void deactivate() {
    // 在此处理 State 对象从树中被移除的操作
    super.deactivate();
  }
  @override
  void activate() { 
      // 在此处理 State 对象被重新插入树里
    super.activate();
  }
  @override
  void dispose() {
    // 在此释放资源
    super.dispose();
  }
}

这些生命周期方法提供了对应用程序状态变化时执行操作的机会,你可以根据需求在这些方法中添加逻辑。要注意的是,StatefulWidget 的生命周期与 State 对象的生命周期是相关的,但不完全相同。

StatelessWidget 的生命周期方法:

  • build 构建 Widget 树的主要方法。
dartCopy codeclass MyWidget extends StatefulWidget {
  @override
  Widget build(BuildContext context) {
    return Widget;
  }
}
​