Flutter 狀態(tài)管理(Bloc)

好幾天一直看Flutter的設(shè)計(jì)模型,因?yàn)閒lutter 是靠State 來刷新UI的,這樣就出現(xiàn)怎么才能把UI跟邏輯隔離呢,iOS 有mvc ?mvvm ?mvp 等如果直接用iOS 的思想是走不通的,自己也查了一下Flitter 的狀態(tài)管理有 StatefulWidget 和 setState() ,InheritedWidget,Scoped model ,BLoC ?,Redux 等等,在這里介紹一下它們的區(qū)別?主講bloc,這是官方推薦的管理模式

好的框架要求

? ? 能管理好全局狀態(tài)和本地狀態(tài)

? ?UI 邏輯和業(yè)務(wù)邏輯應(yīng)該是分離的

? ?在框架的幫助下可以寫出高質(zhì)量的代碼

? ?框架應(yīng)該提升 App 的性能

? ?框架要容易理解,便于擴(kuò)展

一區(qū)別

1.?StatefulWidget 和 setState()?

可以管理state ,相對(duì)于管理數(shù)據(jù)較少的界面還可以,涉及到數(shù)據(jù)量大且共用的數(shù)據(jù)等就顯著不是那么友好了,

主要區(qū)別:UI 邏輯和業(yè)務(wù)邏輯沒有分離 且只能管理本地狀態(tài)

2.?InheritedWidget

數(shù)據(jù)共享,可以把這個(gè)狀態(tài)共享給多個(gè)界面使用,InheritedWidget 只能管理全局狀態(tài),而且沒有涉及到 UI 邏輯和業(yè)務(wù)邏輯的分離,大量人員合作開發(fā)不建議使用

3.?Scoped model

可以對(duì)全局狀態(tài)進(jìn)行管理,數(shù)據(jù)從上到下傳遞,也可以從下到上傳遞,

但是數(shù)據(jù)和UI沒有隔離,不便維護(hù),造成單個(gè)dart 臃腫 ,無(wú)法管理本地狀態(tài)

4?BLoc

響應(yīng)式編程,相當(dāng)于mvvm ,既能管理本地狀態(tài)也能管理全局狀態(tài),可以從上往下,也可以從下往上傳,維護(hù)方便,數(shù)據(jù)于UI隔離,目前比較好的框架,

現(xiàn)在你知道怎么選擇了嗎下篇重點(diǎn)講bloc實(shí)踐下一節(jié)Flitter—bloc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容