Flutter---生命周期

Flutter 中 Widget 的生命周期分为两大类:StatefulWidgetStatelessWidget

  1. StatelessWidget 生命周期
Dart 复制代码
class MyStatelessWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
  1. StatefulWidget 完整生命周期

生命周期方法执行顺序

创建阶段 → 更新阶段 → 销毁阶段

创建阶段

Dart 复制代码
class MyStatefulWidget extends StatefulWidget {
  @override
  _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  
  // 1. 构造函数
  _MyStatefulWidgetState() {
    print('1. 构造函数调用');
  }
  
  // 2. initState - 最重要的初始化方法
  @override
  void initState() {
    super.initState();
    print('2. initState调用');

  }
  
  // 3. didChangeDependencies - 依赖变化时调用
  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    print('3. didChangeDependencies调用');
    // 用途:处理InheritedWidget依赖变化
    // 在initState之后立即调用,也可能在依赖变化时调用
  }
  
  // 4. build - 构建UI
  @override
  Widget build(BuildContext context) {
    print('4. build调用');
    return Container();
  }
  
  // 5. didUpdateWidget - Widget配置更新时调用
  @override
  void didUpdateWidget(covariant MyStatefulWidget oldWidget) {
    super.didUpdateWidget(oldWidget);
    print('5. didUpdateWidget调用');
    
  }
}

更新阶段

触发更新的方式

Dart 复制代码
// 方式1: setState
setState(() {
  _counter++;
});

// 方式2: 父组件重建传入新props
ParentWidget → MyStatefulWidget(newProps)

// 方式3: InheritedWidget数据变化

更新时的调用顺序

Dart 复制代码
didUpdateWidget() → build()

销毁阶段

Dart 复制代码
// 6. deactivate - 从树中移除时调用
  @override
  void deactivate() {
    print('6. deactivate调用');
    super.deactivate();
    // 用途:临时移除时的清理工作
  }
  
  // 7. dispose - 永久销毁时调用
  @override
  void dispose() {
    print('7. dispose调用');
    // 用途:释放资源、取消订阅、停止动画
   
    super.dispose();
  }
}

完整的生命周期流程图

Dart 复制代码
创建阶段:
构造函数 → initState() → didChangeDependencies() → build()

更新阶段:
setState() 或 props变化 → didUpdateWidget() → build()

销毁阶段:
deactivate() → dispose()
相关推荐
克喵的水银蛇5 小时前
Flutter 动画实战:基础动画 + Hero 动画 + 自定义动画
flutter
松☆6 小时前
Flutter + OpenHarmony 实战:构建离线优先的跨设备笔记应用
笔记·flutter
_大学牲8 小时前
Flutter 勇闯2D像素游戏之路(一):一个 Hero 的诞生
flutter·游戏·游戏开发
kirk_wang9 小时前
Flutter插件在鸿蒙端的开发与部署:跨生态桥梁的架构与实现
flutter·移动开发·跨平台·arkts·鸿蒙
勇气要爆发11 小时前
【第五阶段—高级特性和框架】复杂动画案例分析初体验
flutter
勤劳打代码13 小时前
追本溯源 —— SetState 刷新做了什么
flutter·面试·性能优化
松☆14 小时前
OpenHarmony 后台任务与 Flutter 生命周期协调:构建稳定可靠的混合应用
flutter
松☆15 小时前
Flutter 与 OpenHarmony 深度集成:自定义 MethodChannel 插件开发全指南
flutter·wpf
克喵的水银蛇15 小时前
Flutter 布局实战:掌握 Row/Column/Flex 弹性布局
前端·javascript·flutter