日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

flutter中state详解

發(fā)布時間:2025/3/19 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flutter中state详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

State

在說到StatefulWidget之前,先說下State。State的作用有兩點(diǎn):

  • 在widget構(gòu)建的時候可以被同步讀取;
  • 在widget的生命周期中可能會被改變。
  • State生命周期

    State的生命周期有四種狀態(tài):

    • created:當(dāng)State對象被創(chuàng)建時候,State.initState方法會被調(diào)用;
    • initialized:當(dāng)State對象被創(chuàng)建,但還沒有準(zhǔn)備構(gòu)建時,State.didChangeDependencies在這個時候會被調(diào)用;
    • ready:State對象已經(jīng)準(zhǔn)備好了構(gòu)建,State.dispose沒有被調(diào)用的時候;
    • defunct:State.dispose被調(diào)用后,State對象不能夠被構(gòu)建。

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Txxq1QXj-1612666084611)(http://whysodiao.com/images/State LifeCycle.png)]

    完整生命周期如下:

    • 創(chuàng)建一個State對象時,會調(diào)用StatefulWidget.createState;
    • 和一個BuildContext相關(guān)聯(lián),可以認(rèn)為被加載了(mounted);
    • 調(diào)用initState;
    • 調(diào)用didChangeDependencies;
    • 經(jīng)過上述步驟,State對象被完全的初始化了,調(diào)用build;
    • 如果有需要,會調(diào)用didUpdateWidget;
    • 如果處在開發(fā)模式,熱加載會調(diào)用reassemble;
    • 如果它的子樹(subtree)包含需要被移除的State對象,會調(diào)用deactivate;
    • 調(diào)用dispose,State對象以后都不會被構(gòu)建;
    • 當(dāng)調(diào)用了dispose,State對象處于未加載(unmounted),已經(jīng)被dispose的State對象沒有辦法被重新加載(remount)。

    setState

    State中比較重要的一個方法是setState,當(dāng)修改狀態(tài)時,widget會被更新。比方說點(diǎn)擊CheckBox,會出現(xiàn)選中和非選中狀態(tài)之間的切換,就是通過修改狀態(tài)來達(dá)到的。

    查看setState源碼,在一些異常的情況下將會拋出異常:

    • 傳入的為null;
    • 處在defunct階段;
    • created階段還沒有被加載(mounted);
    • 參數(shù)返回一個Future對象。

    檢查完一系列異常后,最后調(diào)用代碼如下:

    _element.markNeedsBuild();

    markNeedsBuild內(nèi)部,則是通過標(biāo)記element為dirty,在下一幀的時候重建(rebuild)。可以看出setState并不是立即生效,它只是將widget進(jìn)行了標(biāo)記,真正的rebuild操作,則是等到下一幀的時候才會去進(jìn)行。

    StatefulWidget和StatelessWidget

    StatefulWidget和StatelessWidget如下所示

    一個StatelessWidget可以用多個不同的BuildContext構(gòu)建,而一個StatefulWidget會為每個BuildContext創(chuàng)建一個State對象。

    StatelessWidget

    對于StatelessWidget,build方法會在如下三種情況下調(diào)用,

  • widget第一次被插入到樹中;
  • widget的父節(jié)點(diǎn)更改了配置(configuration);
  • widget依賴的InheritedWidget改變了。
  • class GreenFrog extends StatelessWidget {const GreenFrog({ Key key }) : super(key: key);@overrideWidget build(BuildContext context) {return new Container(color: const Color(0xFF2DBD3A));} }

    StatefulWidget

    StatefulWidget的兩個主要類別:

  • 在initState中創(chuàng)建資源,在dispose中銷毀,但是不依賴于InheritedWidget或者調(diào)用setState方法,這類widget基本上用在一個應(yīng)用或者頁面的root;
  • 使用setState或者依賴于InheritedWidget,這種在營業(yè)生命周期中會被重建(rebuild)很多次。
  • class YellowBird extends StatefulWidget {const YellowBird({ Key key }) : super(key: key);@override_YellowBirdState createState() => new _YellowBirdState(); }class _YellowBirdState extends State<YellowBird> {@overrideWidget build(BuildContext context) {return new Container(color: const Color(0xFFFFE306));} }

    ld(BuildContext context) {
    return new Container(color: const Color(0xFFFFE306));
    }
    }

    總結(jié)

    以上是生活随笔為你收集整理的flutter中state详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 高潮videossex高潮 | 青青草伊人久久 | 亚洲一区h| 亚洲91视频 | 欧美91精品 | 亚洲精品欧美日韩 | 黄色你懂的 | 久久精品免费在线 | 一级作爱视频 | a国产免费 | 国产色网站 | 成人免费毛片入口 | 久久8| 国产三区在线观看 | 超碰在线c | 三级a做爰全过程 | 污污污污污污www网站免费 | 亚洲97在线 | 成人激情开心 | 无码人妻精品一区二区三应用大全 | 国产另类综合 | 成人av电影免费观看 | 日本高清黄色 | 国产成人无码av在线播放dvd | 国产原创视频 | 亚洲熟妇一区二区三区 | 国产在线超碰 | 免费在线播放视频 | 1024精品一区二区三区日韩 | 放荡闺蜜高h苏桃情事h | 亚洲国产成人综合 | 天天综合天天做天天综合 | 欧美成人黄色 | 日本午夜一区 | 欧美三级不卡 | 嫩草嫩草嫩草嫩草 | 亚洲精华国产精华精华液网站 | 操三八男人的天堂 | 亚洲第一自拍 | 喷水少妇 | 好看的毛片 | 日韩免费高清视频 | 黄色www视频| av日韩精品| 成年人免费在线 | 日韩在线一二三 | 国产网友自拍 | 欧美日韩精品久久久免费观看 | 性欧美一级| 久久精品一日日躁夜夜躁 | 人妻无码一区二区三区 | 性欧美一区 | 亚洲欧美一区二区精品久久久 | 一级爱爱片| 日韩精品www | 绯色av一区二区 | 日韩伦乱 | 久久久精品人妻一区二区三区四 | 污污在线看 | 色99视频 | 黄色在线观看国产 | 老鸭窝视频在线观看 | 亚洲精品.www | 伊人网视频在线观看 | 黄色片在线免费看 | 中文字幕一区二区三区人妻四季 | 美女脱了裤子让男人捅 | 亚洲欧洲国产视频 | 精品久久久久成人码免费动漫 | 张柏芝亚洲一区二区三区 | 欧美hdse| 婷婷俺去也 | 色诱视频在线观看 | 啪啪日韩| 亚洲第一视频在线观看 | 久久久久免费 | 爱如潮水3免费观看日本高清 | 国产精品无码毛片 | 久久精品亚洲天堂 | 国产一页 | 久久综合久久综合久久综合 | 国产在线超碰 | 国产呦系列 | 91人人干 | 久久久精品人妻一区二区三区色秀 | 亚洲欧洲成人在线 | 日本黄色免费在线观看 | 嫩草av91 | 国产女人在线视频 | 婷婷亚洲五月 | 久久av一区二区 | 成人深夜在线观看 | jizz日本在线| 一区二区三区四区精品 | 日韩一区二区三区精品视频 | 欧美乱妇狂野欧美视频 | 国产精品无码人妻一区二区在线 | 国产福利久久 | 福利在线免费观看 |