zoukankan      html  css  js  c++  java
  • Flutter的生命週期

    Flutter跟安卓的Activity、iOS的ViewController一样拥有自己的生命周期, Flutter中一切都是Widget,渲染方式有点像H5的DOM树。 

          先看生命周期图:

    Flutter生命周期可以分为3个阶段:

    1、实例化组件并添加到树, 即Navigator.push;

    2、状态变化,即打开新的widget或者依赖的上级widget发生变化;

    3、从树中移除,  即Navigator.pop。

    构造函数:

    同其它高级语言, 只执行一次;

    initState:

    插入到渲染树时调用,只执行一次。(类似Android Fragment的onCreateView函数)

    didChangeDependencies:

    1、在初始化initState后执行; 2、显示/关闭其它widget。 3、可执行多次;

    didUpdateWidget:

    上级节点rebuild widget时, 即上级组件状态发生变化时会触发子widget执行didUpdateWidget;

    deative:

    有点像Android的onStop函数, 在打开新的Widget或回到这个widget时会执行; 可执行多次;

    dispose:

    类似于Android的onDestroy, 在执行Navigator.pop后会调用该办法, 表示组件已销毁;

    reassemble:

    点击闪电会执行,只用于调试时的hot reload。 release版本不会执行该函数。

    常见业务场景:

    Widget A打开Widget B: Navigator.push(B)

    B构造函数--->B initState--->B didChangeDependencies--->B build--->A deactive--->A didChangeDependencies.

    Widget B退出: Navigator.pop

    A deactive--->A didChangeDependencies--->A build--->B deactive--->B dispose

    可以看出, Flutter打开、关闭Widget时跟安卓、iOS的时序一样, 都是先处理即将显示的界面。

    Flutter不支持Home键、Power键等监听,  需要宿主(安卓/iOS)将事件发送给Flutter, 这时可以用EventChannel实现, 从而补全Flutter的生命周期。

  • 相关阅读:
    简单实现java线程池 阿里
    下载安装mysql的一些坑 阿里
    [ZZ]]文艺表年装B指南
    台湾前十大科技公司拼不过三星(往后一点三星都不要买啦!)
    [不是面经,胜似面经]条条大路通Google
    ubuntu 下PDA同步解决(SynCE, OpenSync)
    android整体印象
    关系图:Linux演化图,Ubuntu应用图
    linux 版本中 i386/i686/x8664/pcc 等... 的区别
    一个计算机高手的成长历程【转】
  • 原文地址:https://www.cnblogs.com/ssjf/p/11759366.html
Copyright © 2011-2022 走看看