JetPack Compose 實(shí)戰(zhàn) Jetchat(5)

前4篇,囫圇吞棗,看了整體控制邏輯,大體頁面封裝。

回頭繼續(xù)學(xué)習(xí),里面的知識(shí)。

定義封裝 BackPressHandler

currentOnBackPressed

  1. Safely update the current onBack lambda when a new one is provided
    安全更新onBack狀態(tài)的lambda,當(dāng)新的狀態(tài)過來的時(shí)候

  2. Remember in Composition a back callback that calls the onBackPressed lambda
    記住在 Composition 中調(diào)用 onBackPressed lambda 的返回回調(diào)

backDispatcher

每當(dāng)有新的調(diào)度設(shè)置回調(diào),當(dāng)效果離開 Composition 或者有新的調(diào)度器時(shí),移除回調(diào)

整體結(jié)構(gòu)和組件的控制
這里我們看到,在Theme中對(duì)主題的封裝,Components是頁面架構(gòu)組件的封裝。

Mock 數(shù)據(jù)的封裝
Demo 數(shù)據(jù)在data/FakeData.kt . 這里面封裝了界面所需要的靜態(tài)數(shù)據(jù)。Message列表數(shù)據(jù),UI State ---聊天UI的狀態(tài)。同事Profile數(shù)據(jù)的封裝,我自己的Profile數(shù)據(jù)封裝。

兩大業(yè)務(wù)模塊封裝,profile,conversation

  1. profile模塊
    我們熟悉的viewmodel 封裝。在ProfileViewModel.kt 中我們學(xué)習(xí)到@Immutable 的使用

不可變可用于將類標(biāo)記為生成不可變實(shí)例。 類的不變性未經(jīng)驗(yàn)證,并且是類型的承諾,即所有可公開訪問的屬性和字段在構(gòu)造實(shí)例后都不會(huì)更改。不可變通過組合的使用,可以用于組合優(yōu)化。從類型讀取的值不會(huì)發(fā)生變化。僅包含沒有自定義 getter 的 val 屬性的數(shù)據(jù)類可以安全地標(biāo)記為不可變的。

以上經(jīng)過查詢,對(duì)比Kotlin的不可變特性和數(shù)組等理解。認(rèn)定ProfileScreenState 不可變

ProfileViewModel 很簡(jiǎn)單,根據(jù)userId,返回LiveData 泛型ProfileScreenState。我自創(chuàng)就稱他為模板數(shù)據(jù)吧、

ProfileFragment 中,維護(hù)了兩個(gè)viewmodel,ProfileViewModel和MainViewModel 都是通過by的方式。 初始化的時(shí)候,我們看到inflat實(shí)例化ComposeView 實(shí)際就是ViewGroup(看源碼繼承關(guān)系)

Previews.kt 這個(gè)相當(dāng)于測(cè)試所見即所得的開發(fā),算是測(cè)試類,測(cè)試ProfileScreen組件,適配頁面預(yù)覽

Profile.kt ProfileScreen 具體實(shí)現(xiàn)封裝

Profile.kt

大概長(zhǎng)這個(gè)樣子,具體細(xì)節(jié)可以去讀代碼。

關(guān)于conversation 下一篇講解和總結(jié)?;旧螶etchat解讀就結(jié)束了。實(shí)在太累了,下一篇見

最后編輯于
?著作權(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ù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

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