Flutter生命周期

State 生命周期
方法名 功能 调用时机 调用次数
构造方法 接收父Widget传递的初始化UI配置数据 创建State时 1
initState 与渲染相关的初始化工作 在State被插入视图树时 1
didChangeDependencies 处理State队形依赖关系变化 initState后及State对象依赖关系变化时 >= 1
build 构建视图 State准备好数据需要渲染时 >= 1
setState 触发视图重建 需要刷新UI时 >= 1
didUpdateWidget 处理Widget的配置变化 父Widget setState触发子Widget重建时 >= 1
deactivate 组件被移除 组件不可视 >= 1
dispose 组件被销毁 组件被永久移除 1

activity生命周期和Flutter对应关系:

在原生 Android、iOS 开发中,有时需要在对应的 App 生命周期事件中做相应处理,比如 App 从后台进入前台、从前台退到后台,或是在 UI 绘制完成后做一些处理。

在原生开发中,可以通过重写 Activity、ViewController 生命周期回调方法,或是注册应用程序的相关通知,来监听 App 的生命周期并做相应的处理。而在 Flutter 中,我们可以利用 WidgetsBindingObserver 类,来实现同样的需求。

Flutter提供了WidgetsBindingObserver来监听AppLifecycleState, 而AppLifecycleState常用的状态有:

  1. resumed 界面可见, 同安卓的onResume。

  2. inactive界面退到后台或弹出对话框情况下, 同安卓的onPause;

  3. paused应用挂起,比如退到后台,同安卓的onStop;

class TestState extends State with WidgetsBindingObserver {
  ... 
  @override
  @mustCallSuper
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this); // 注册监听器
  }
  
  @override
  @mustCallSuper
  void dispose() {
    super.dispose();
    WidgetsBinding.instance.removeObserver(this); // 移除监听器
  }
  
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) async {
    print("$state");
    if (state == AppLifecycleState.resumed) {
      // do sth
    }
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Flutter跟安卓的Activity、iOS的ViewController一样拥有自己的生命周期, Flutte...
    三也视界阅读 58,491评论 3 30
  • Flutter 中的生命周期 flutter 也有自己的生命周期,但跟 Android 比起来就显得弱化了,官方定...
    wethereornot阅读 8,320评论 3 3
  • 前提 Flutter 的生命周期分为两个部分: 1.Widget 的生命周期2.App 的生命周期 Widget的...
    G_whk阅读 2,241评论 1 3
  • 1.Flutter中生命周期: flutter也有自己的生命周期,不像Android中Application、Ac...
    Gflyer阅读 1,130评论 0 0
  • Flutter跟安卓的Activity、iOS的ViewController一样拥有自己的生命周期, Flutte...
    creazylee阅读 647评论 0 0