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()
相关推荐
GitLqr4 小时前
别在 Flutter 的 main() 里乱锁屏幕方向,小心 iPad 分屏功能被你搞没了
android·flutter·ios
唐诺6 小时前
Flutter Pigeon 跨端通信实战指南
flutter·pigeon
浮江雾6 小时前
Flutter第十七节-----路由管理(3)
android·开发语言·前端·javascript·flutter·入门
程序员老刘9 小时前
Flutter版本选择指南:3.44密集修BUG,9月大限将至 | 2026年7月
flutter·ai编程·客户端
恋猫de小郭12 小时前
Flutter 3D 渲染的全新选择和应用场景
android·前端·flutter
敲代码日常13 小时前
不会Flutter,怎么做服药提醒APP
flutter
浮江雾1 天前
Flutter第十六节-----路由管理(2)
android·开发语言·前端·javascript·flutter·html
恋猫de小郭2 天前
Flutter 全新真 3D 实现,用 flutter_scene 能开发一个「我的世界」
android·前端·flutter