最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter改變狀態(tài)變量是否必須寫在setState回調(diào)詳解

 更新時間:2022年11月10日 14:41:43   作者:deepfunc  
這篇文章主要為大家介紹了Flutter改變狀態(tài)變量是否必須寫在setState回調(diào)里的原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

我們都知道 setState(VoidCallback fn) 是這樣用的:

setState(() {
  count++;
});

執(zhí)行完后組件會重新 build(),就可以取到 count 的最新值了。但其實(shí)這樣寫也是一樣的:

count++;
setState(() {});

因為 setState() 最后會調(diào)用 markNeedsBuild(),F(xiàn)lutter 會調(diào)度使組件 rebuild,所以狀態(tài)變量的改變不是必須寫在 setState() 的回調(diào)里面,只需要最后執(zhí)行一下 setState() 也可以達(dá)到刷新界面的效果。

那為什么 Flutter 要設(shè)計 setState() 有個回調(diào)函數(shù)呢?有兩個原因:

一是 setState() 的狀態(tài)更新是同步的,如果你在 fn 里返回了一個 Future 去改變狀態(tài)的值,setState 內(nèi)部的斷言會提示你不要這樣做,應(yīng)該在 Future 完成后在同步代碼里去調(diào)用 setState 改變狀態(tài)。

二是為了代碼可維護(hù)性考慮。試想一下隨著業(yè)務(wù)代碼的迭代,可能會有很多狀態(tài)變量會發(fā)生改變,比如一開始只有狀態(tài)變量 a,后來加入了狀態(tài)變量 b 和 c,代碼變成這樣:

a++;
b++;
c++;
setState(() {});

當(dāng)后續(xù)業(yè)務(wù)發(fā)生變化這些狀態(tài)變量都不需要了,后面維護(hù)的童鞋把這些狀態(tài)變量都刪除了。因為大家通常都只關(guān)注改自己的代碼,會有可能忘記刪除最后的 setState,代碼就變成了這樣:

// a++;
// b++;
// c++;
setState(() {});

這樣就造成了不必要的 rebuild 浪費(fèi)。所以綜上所述,特別是考慮到代碼的維護(hù)性,我們都應(yīng)該把狀態(tài)變量的改變放到 setState 的回調(diào)里面。

以上就是Flutter改變狀態(tài)變量是否必須寫在setState回調(diào)詳解的詳細(xì)內(nèi)容,更多關(guān)于Flutter改變狀態(tài)變量setState回調(diào)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android實(shí)現(xiàn)CoverFlow效果控件的實(shí)例代碼

    Android實(shí)現(xiàn)CoverFlow效果控件的實(shí)例代碼

    這篇文章主要介紹了Android實(shí)現(xiàn)CoverFlow效果控件的實(shí)例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android利用Service開發(fā)簡單的音樂播放功能

    Android利用Service開發(fā)簡單的音樂播放功能

    這篇文章主要介紹了Android利用Service開發(fā)簡單的音樂播放功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-04-04
  • Android local.properties 文件讀取實(shí)例詳解

    Android local.properties 文件讀取實(shí)例詳解

    這篇文章主要介紹了Android local.properties 文件讀取實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • android layout 按比例布局的代碼

    android layout 按比例布局的代碼

    android layout 按比例布局的代碼,需要的朋友可以參考一下
    2013-03-03
  • Android開發(fā)實(shí)現(xiàn)的內(nèi)存管理工具類

    Android開發(fā)實(shí)現(xiàn)的內(nèi)存管理工具類

    這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)的內(nèi)存管理工具類,可實(shí)現(xiàn)計算手機(jī)內(nèi)部與外部的總存儲空間、可用存儲空間等功能,需要的朋友可以參考下
    2017-11-11
  • Android獲取設(shè)備IP地址的示例代碼

    Android獲取設(shè)備IP地址的示例代碼

    ?我們在做Android平臺GB28181設(shè)備接入模塊的時候,上層需要拿到設(shè)備的IP地址,所以這篇文章主要為大家介紹了Android獲取設(shè)備IP地址的相關(guān)資料,需要的可以參考下
    2023-11-11
  • Android中的JSON詳細(xì)總結(jié)

    Android中的JSON詳細(xì)總結(jié)

    一種輕量級的數(shù)據(jù)交換格式,具有良好的可讀和便于快速編寫的特性。業(yè)內(nèi)主流技術(shù)為其提供了完整的解決方案(有點(diǎn)類似于正則表達(dá)式,獲得了當(dāng)今大部分語言的支持),從而可以在不同平臺間進(jìn)行數(shù)據(jù)交換
    2013-01-01
  • Android List刪除重復(fù)數(shù)據(jù)

    Android List刪除重復(fù)數(shù)據(jù)

    這篇文章主要介紹了Android List刪除重復(fù)數(shù)據(jù)的實(shí)例代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-06-06
  • 2013年 移動App設(shè)計13項注意細(xì)節(jié)總結(jié)

    2013年 移動App設(shè)計13項注意細(xì)節(jié)總結(jié)

    在過去的一年里,移動成主流也讓眾多的移動應(yīng)用如雨后春筍般層出不窮,在眾多開發(fā)者從中獲利的同時競爭也愈演愈烈,如何才能保證自己立于不敗之地接下來介紹移動App設(shè)計的13大精髓感興趣的朋友可以了解下啊
    2013-01-01
  • Android jni調(diào)試打印char陣列的實(shí)例詳解

    Android jni調(diào)試打印char陣列的實(shí)例詳解

    這篇文章主要介紹了Android jni調(diào)試打印char陣列的實(shí)例詳解的相關(guān)資料,通過此文希望能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-08-08

最新評論

内丘县| 惠来县| 杂多县| 驻马店市| 永善县| 合水县| 静安区| 奉化市| 嵊泗县| 三门峡市| 荔波县| 贵阳市| 濮阳市| 万载县| 宜阳县| 龙陵县| 佛冈县| 湖口县| 东乡| 涞水县| 广南县| 宁海县| 阿坝县| 长治县| 祁连县| 黔江区| 新郑市| 贡觉县| 大田县| 缙云县| 筠连县| 乌鲁木齐县| 栾城县| 盐城市| 宝鸡市| 开阳县| 白玉县| 兴业县| 阳西县| 齐齐哈尔市| 湘潭市|