flutter的生命周期

3-2.a59bef97.jpg.png

initState():當(dāng)Widget第一次插入到Widget樹時(shí)會(huì)被調(diào)用中跌,對(duì)于每一個(gè)State對(duì)象馋劈,F(xiàn)lutter framework只會(huì)調(diào)用一次該回調(diào)维蒙,所以简烤,通常在該回調(diào)中做一些一次性的操作,如狀態(tài)初始化洲愤、訂閱子樹的事件通知等颓芭。不能在該回調(diào)中調(diào)用BuildContext.dependOnInheritedWidgetOfExactType,原因是在初始化完成后柬赐,Widget樹中的InheritFromWidget也可能會(huì)發(fā)生變化亡问,所以正確的做法應(yīng)該在在build()方法或didChangeDependencies()中調(diào)用它。

didChangeDependencies():當(dāng)State對(duì)象的依賴發(fā)生變化時(shí)會(huì)被調(diào)用肛宋;例如:在之前build() 中包含了一個(gè)InheritedWidget玛界,然后在之后的build() 中InheritedWidget發(fā)生了變化万矾,那么此時(shí)InheritedWidget的子widget的didChangeDependencies()回調(diào)都會(huì)被調(diào)用。典型的場(chǎng)景是當(dāng)系統(tǒng)語言Locale或應(yīng)用主題改變時(shí)慎框,F(xiàn)lutter framework會(huì)通知widget調(diào)用此回調(diào)良狈。

build():它主要是用于構(gòu)建Widget子樹的,會(huì)在如下場(chǎng)景被調(diào)用:

在調(diào)用initState()之后笨枯。
在調(diào)用didUpdateWidget()之后薪丁。
在調(diào)用setState()之后。
在調(diào)用didChangeDependencies()之后馅精。
在State對(duì)象從樹中一個(gè)位置移除后(會(huì)調(diào)用deactivate)又重新插入到樹的其它位置之后严嗜。
reassemble():此回調(diào)是專門為了開發(fā)調(diào)試而提供的,在熱重載(hot reload)時(shí)會(huì)被調(diào)用洲敢,此回調(diào)在Release模式下永遠(yuǎn)不會(huì)被調(diào)用漫玄。

didUpdateWidget():在widget重新構(gòu)建時(shí),F(xiàn)lutter framework會(huì)調(diào)用Widget.canUpdate來檢測(cè)Widget樹中同一位置的新舊節(jié)點(diǎn)压彭,然后決定是否需要更新睦优,如果Widget.canUpdate返回true則會(huì)調(diào)用此回調(diào)。正如之前所述壮不,Widget.canUpdate會(huì)在新舊widget的key和runtimeType同時(shí)相等時(shí)會(huì)返回true汗盘,也就是說在在新舊widget的key和runtimeType同時(shí)相等時(shí)didUpdateWidget()就會(huì)被調(diào)用。

deactivate():當(dāng)State對(duì)象從樹中被移除時(shí)询一,會(huì)調(diào)用此回調(diào)隐孽。在一些場(chǎng)景下,F(xiàn)lutter framework會(huì)將State對(duì)象重新插到樹中健蕊,如包含此State對(duì)象的子樹在樹的一個(gè)位置移動(dòng)到另一個(gè)位置時(shí)(可以通過GlobalKey來實(shí)現(xiàn))菱阵。如果移除后沒有重新插入到樹中則緊接著會(huì)調(diào)用dispose()方法。

dispose():當(dāng)State對(duì)象從樹中被永久移除時(shí)調(diào)用缩功;通常在此回調(diào)中釋放資源晴及。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市掂之,隨后出現(xiàn)的幾起案子抗俄,更是在濱河造成了極大的恐慌脆丁,老刑警劉巖世舰,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異槽卫,居然都是意外死亡跟压,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門歼培,熙熙樓的掌柜王于貴愁眉苦臉地迎上來震蒋,“玉大人茸塞,你說我怎么就攤上這事〔槠剩” “怎么了钾虐?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)笋庄。 經(jīng)常有香客問我效扫,道長(zhǎng),這世上最難降的妖魔是什么直砂? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任菌仁,我火速辦了婚禮,結(jié)果婚禮上静暂,老公的妹妹穿的比我還像新娘济丘。我一直安慰自己,他們只是感情好洽蛀,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布摹迷。 她就那樣靜靜地躺著,像睡著了一般辱士。 火紅的嫁衣襯著肌膚如雪泪掀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天颂碘,我揣著相機(jī)與錄音异赫,去河邊找鬼。 笑死头岔,一個(gè)胖子當(dāng)著我的面吹牛塔拳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播峡竣,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼靠抑,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了适掰?” 一聲冷哼從身側(cè)響起颂碧,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎类浪,沒想到半個(gè)月后载城,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡费就,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年诉瓦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡睬澡,死狀恐怖固额,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情煞聪,我是刑警寧澤斗躏,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站昔脯,受9級(jí)特大地震影響瑟捣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜栅干,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一迈套、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碱鳞,春花似錦桑李、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至崩泡,卻和暖如春禁荒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背角撞。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工呛伴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谒所。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓热康,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親劣领。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姐军,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容