如何监听页面的生命周期


我们在上一章回中介绍了"如何监听组件的生命周期"相关的内容,本章回中将介绍生命周期库:Lifecycle.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在本章回中将介绍一个可以监听组件生命周期的库:Lifecycle,这个库是咱们国内开发人员编写的,已经在Github上开源,该库可以监听到组件的生命周期,它
可以像原生开发中的onCreate,onResume等生命周期方法一样去使用,本章回中将详细介绍它的使用方法。

2. 生命周期状态与方法

2.1 生命周期状态

在Lifecycle库中有以下的生命周期事件,它和我们通常说的生命周期状态相关联,详细如下:

  • pop :表示组件从路由导航栈中弹出,此时会回调dispose方法;
  • push, :表示组件进入路由导航栈中,此时会回调initState方法;
  • visible, :表示组件处于可见状态,类似onStart方法;
  • active, :表示组件处于可获取焦点状,类似onResume方法;
  • inactive, :表示组件处于不可见状态,类似onPause方法;
  • invisible, :表示组件处于不可见状态,类似onStop方法;

2.2 生命周期方法

Lifecycle库提供的生命周期方法比较少,常用的是onLifecycleEvent(),该方法包含一个参数,参数的值为我们在上一个小节中介绍的生命周期事件,我们重写
这个生命周期方法后可以通过方法的参数获取到组件的生命周期事件。我们将在后面的小节中介绍具体的细节。

2.3 使用方法

介绍完库中提供的生命周期事件和生命周期方法后,我们介绍如何使用它们,详细如下:

  • 在MaterialApp中设置navigatorObservers属性用来监听路由;
  • 在组件中组合Lifecycle库中的类LifecycleAware和LifecycleMixin;
  • 在组件中重写Lifecycle库中的生命周期方法onLifecycleEvent;
  • 在onLifecycleEvent这个生命周期方法中监听组件的生命周期事件;
    我们在这里只介绍了一种使用方法,该库还提供了其它的使用方法,大家可以参考官方给的文档。

3. 示例代码

MaterialApp(
  navigatorObservers: [defaultLifecycleObserver,],
)

class _ExPageLifeCycleState extends State<ExPageLifeCycle> with WidgetsBindingObserver,LifecycleAware,LifecycleMixin{
  
  void onLifecycleEvent(LifecycleEvent event) {
    /// TODO: implement onLifecycleEvent
    debugPrint("life event: $event");
    switch(event) {
      case LifecycleEvent.visible:
        break;
      case LifecycleEvent.active:
        break;
      case LifecycleEvent.inactive:
        break;
      case LifecycleEvent.invisible:
        break;
      case LifecycleEvent.push:
        break;
      case LifecycleEvent.pop:
        break;
    }
  }
}

上面的示例代码依据上一小节中介绍的使用方法编写,代码中在重写生命周期方法时只是通过日志输出生命周期事件,没有添加任何的业务逻辑,大家可以在switch的每
个case中依据不同的生命周期事件添加不同的业务逻辑。

4. 内容总结

我们在本章回中介绍的Lifecycle库可以看作是上一章回内容的扩展,因为上一章回介绍的widgestOvserver类主要用来监听整个App的生命周期,而本章回中介绍的
Lifecycle库主要用来监听单个组件的生命周期,这两个内容可以配合使用。最后,我们对本章回中内容做一个全面的总结:

  • Lifecycle库提供了不同的生命周期事件,类似原生开发中Actiivty的生命周期方法;
  • Lifecycle库提供的生命周期方法比较简单,主要用来监听生命周期事件;
  • Lifecycle库可以通过组合类的方式使用,还可以通过其它方式来使用;
    看官们,与"生命周期库:LifeCycle"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值