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()
相关推荐
autumn200513 分钟前
Flutter 框架跨平台鸿蒙开发 - AR历史场景穿越
flutter·华为·ar·harmonyos
AI_零食31 分钟前
开源鸿蒙跨平台Flutter开发:手账记事模板库应用
学习·flutter·华为·开源·harmonyos·鸿蒙
提子拌饭13336 分钟前
开源鸿蒙跨平台Flutter开发:家庭影像传承系统
flutter·华为·开源·harmonyos·鸿蒙
李李李勃谦43 分钟前
Flutter 框架跨平台鸿蒙开发 - 手工作品展示
flutter·华为·harmonyos
左手厨刀右手茼蒿44 分钟前
Flutter 三方库 klutter 的鸿蒙化适配指南 - 掌握 Kotlin Multiplatform (KMP) 互操作技术、助力鸿蒙应用构建极致复用且高性能的跨端业务逻辑共享体系
flutter·harmonyos·鸿蒙·openharmony
世人万千丶1 小时前
开源鸿蒙跨平台Flutter开发:古诗词学习应用
学习·flutter·华为·开源·harmonyos·鸿蒙
独特的螺狮粉1 小时前
开源鸿蒙跨平台Flutter开发:室内探险游戏应用
开发语言·flutter·游戏·华为·开源·harmonyos·鸿蒙
九狼1 小时前
中型Flutter 项目 Riverpod 2.x 迁移 3.0 避坑实录
flutter
独特的螺狮粉1 小时前
开源鸿蒙跨平台Flutter开发:喝水时间提醒应用
开发语言·flutter·华为·信息可视化·开源·harmonyos·鸿蒙
空中海1 小时前
1.1 Flutter 简介与架构原理
flutter·dart