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

前4篇括丁,囫圇吞棗,看了整體控制邏輯枪萄,大體頁(yè)面封裝隐岛。

回頭繼續(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是頁(yè)面架構(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è)面預(yù)覽

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

Profile.kt

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

關(guān)于conversation 下一篇講解和總結(jié)褥蚯≈吭基本上Jetchat解讀就結(jié)束了。實(shí)在太累了赞庶,下一篇見

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載训挡,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(píng)論聯(lián)系作者。
  • 序言:七十年代末歧强,一起剝皮案震驚了整個(gè)濱河市澜薄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摊册,老刑警劉巖肤京,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異茅特,居然都是意外死亡忘分,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門白修,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妒峦,“玉大人,你說我怎么就攤上這事兵睛】虾В” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵祖很,是天一觀的道長(zhǎng)笛丙。 經(jīng)常有香客問我,道長(zhǎng)假颇,這世上最難降的妖魔是什么胚鸯? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮拆融,結(jié)果婚禮上蠢琳,老公的妹妹穿的比我還像新娘啊终。我一直安慰自己镜豹,他們只是感情好傲须,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著趟脂,像睡著了一般泰讽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昔期,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天已卸,我揣著相機(jī)與錄音,去河邊找鬼硼一。 笑死累澡,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的般贼。 我是一名探鬼主播愧哟,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哼蛆!你這毒婦竟也來了蕊梧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤腮介,失蹤者是張志新(化名)和其女友劉穎肥矢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體叠洗,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甘改,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灭抑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片楼誓。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖名挥,靈堂內(nèi)的尸體忽然破棺而出疟羹,到底是詐尸還是另有隱情,我是刑警寧澤禀倔,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布榄融,位于F島的核電站,受9級(jí)特大地震影響救湖,放射性物質(zhì)發(fā)生泄漏愧杯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一鞋既、第九天 我趴在偏房一處隱蔽的房頂上張望力九。 院中可真熱鬧耍铜,春花似錦、人聲如沸跌前。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抵乓。三九已至伴挚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灾炭,已是汗流浹背茎芋。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜈出,地道東北人田弥。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像铡原,于是被迫代替她去往敵國(guó)和親偷厦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

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

  • 人們對(duì)于 UI 開發(fā)的預(yù)期已經(jīng)不同往昔【祢冢現(xiàn)如今沪哺,為了滿足用戶的需求,我們構(gòu)建的應(yīng)用必須包含完善的用戶界面酌儒,其中必然...
    谷歌開發(fā)者閱讀 4,148評(píng)論 0 4
  • 逐句理解項(xiàng)目含義辜妓。 可以到項(xiàng)目地址查看源碼,加速Github[https://gitee.com/zcwfeng/...
    zcwfeng閱讀 1,996評(píng)論 0 10
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭忌怎,有人歡樂有人憂愁籍滴,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,536評(píng)論 28 53
  • 信任包括信任自己和信任他人 很多時(shí)候榴啸,很多事情孽惰,失敗、遺憾鸥印、錯(cuò)過勋功,源于不自信,不信任他人 覺得自己做不成库说,別人做不...
    吳氵晃閱讀 6,190評(píng)論 4 8
  • 步驟:發(fā)微博01-導(dǎo)航欄內(nèi)容 -> 發(fā)微博02-自定義TextView -> 發(fā)微博03-完善TextView和...
    dibadalu閱讀 3,138評(píng)論 1 3