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()
相关推荐
LiWeNHuI5 小时前
Flutter开发:发布插件到Pub
flutter
衿璃7 小时前
Flutter应用架构设计的思考
前端·flutter
QuantumLeap丶9 小时前
《Flutter全栈开发实战指南:从零到高级》- 04 - Widget核心概念与生命周期
flutter·xcode
勤劳打代码11 小时前
触类旁通 —— Flutter 与 React 对比解析
前端·flutter·react native
消失的旧时光-19431 天前
Flutter Event Loop
flutter
程序员老刘1 天前
跨平台开发地图:客户端技术选型指南 | 2025年10月
flutter·react native·客户端
傅里叶1 天前
Flutter 工程环境、插件使用、protobuf配置与字体/持久化管理
flutter
傅里叶1 天前
Flutter之《环境与依赖配置》
flutter
大雷神1 天前
【成长纪实】HarmonyOS中ArkTS与Flutter数据类型对比详解
flutter