Flutter生命周期

36 阅读3分钟

在Flutter中,HomeController类继承自BaseController,并重写了一些生命周期方法。这些方法在应用程序的不同状态下被调用。以下是这些生命周期方法的详细介绍:

  1. onInit() :

    • 这个方法在控制器初始化时调用。通常用于初始化一些变量或状态。
    • 在这个例子中,super.onInit()被调用,确保父类的初始化逻辑也被执行。
  2. onReady() :

    • 这个方法在控制器的所有初始化工作完成后调用,通常用于执行一些需要在界面完全渲染后进行的操作。
    • 在这个例子中,onReady方法中使用了WidgetsBinding.instance.addPostFrameCallback来订阅路由观察者,并调用了ForYouUtil.preLoad()进行预加载操作。
  3. onClose() :

    • 这个方法在控制器被销毁时调用,通常用于清理资源或取消订阅。
    • 在这个例子中,onClose方法中移除了路由观察者的订阅,并调用了super.onClose()来确保父类的清理逻辑也被执行。
  4. didPopNext() :

    • 当当前页面再次显示时调用,通常用于处理页面重新显示时的逻辑。
    • 在这个例子中,didPopNext方法中打印了一条调试信息。
  5. didPush() :

    • 当当前页面被推送到导航堆栈时调用,通常用于处理页面被推送时的逻辑。
    • 在这个例子中,didPush方法中打印了一条调试信息。
  6. didPop() :

    • 当当前页面从导航堆栈中弹出时调用,通常用于处理页面被弹出时的逻辑。
    • 在这个例子中,didPop方法中打印了一条调试信息。
  7. didPushNext() :

    • 当一个新页面被推送到当前页面之上时调用,通常用于处理新页面被推送时的逻辑。
    • 在这个例子中,didPushNext方法中打印了一条调试信息。
  8. onResumed() :

    • 当应用程序从后台恢复到前台时调用,通常用于处理应用程序恢复时的逻辑。
    • 在这个例子中,onResumed方法中打印了一条调试信息。
  9. onPaused() :

    • 当应用程序从前台进入后台时调用,通常用于处理应用程序暂停时的逻辑。
    • 在这个例子中,onPaused方法中打印了一条调试信息。
  10. onInactive() :

    • 当应用程序处于非活动状态时调用,通常用于处理应用程序变为非活动状态时的逻辑。
    • 在这个例子中,onInactive方法中打印了一条调试信息。

在Flutter中,HomeController类中的生命周期方法与iOS中的UIViewController生命周期方法有一些对应关系。以下是一些主要的对应关系:

  1. viewWillAppear:

    • 对应于Flutter中的didPushdidPopNext方法。
    • didPush在页面被推送到导航堆栈时调用,类似于viewWillAppear
    • didPopNext在当前页面再次显示时调用,也类似于viewWillAppear
  2. viewDidAppear:

    • 对应于Flutter中的onReady方法。
    • onReady在页面完全渲染后调用,类似于viewDidAppear
  3. viewWillDisappear:

    • 对应于Flutter中的didPopdidPushNext方法。
    • didPop在页面从导航堆栈中弹出时调用,类似于viewWillDisappear
    • didPushNext在新页面被推送到当前页面之上时调用,也类似于viewWillDisappear
  4. viewDidDisappear:

    • 对应于Flutter中的onClose方法。
    • onClose在控制器被销毁时调用,类似于viewDidDisappear
  5. viewDidLoad:

    • 对应于Flutter中的onInit方法。
    • onInit在控制器初始化时调用,类似于viewDidLoad
  6. applicationDidBecomeActive:

    • 对应于Flutter中的onResumed方法。
    • onResumed在应用程序从后台恢复到前台时调用,类似于applicationDidBecomeActive
  7. applicationWillResignActive:

    • 对应于Flutter中的onPaused方法。
    • onPaused在应用程序从前台进入后台时调用,类似于applicationWillResignActive
  8. applicationDidEnterBackground:

    • 对应于Flutter中的onInactive方法。
    • onInactive在应用程序变为非活动状态时调用,类似于applicationDidEnterBackground