iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0

https://ithelp.ithome.com.tw/upload/images/20220912/20151958IFjRs0xIZ4.png Medium 好讀版

此系列文章是以我的業餘專案: Kimoji 作為範例。
這款以純 Jetpack Compose 撰寫的 side project,已經在 Google Play 上架。 歡迎試玩!

https://ithelp.ithome.com.tw/upload/images/20220907/20151958vXuPLv4aki.png 立馬下載 https://ithelp.ithome.com.tw/upload/images/20220907/20151958LtM1NGErzK.png 限免兌換碼

我們的 app 有一個問題:當我們在寫日記時,如果寫下筆記然後開啟深色模式,筆記內容會被清空。只有在 composable 存在於 Composition 裡的時候remember 函式才能正常運作。每次 configuration change 時,整個 Activity 都會 restarted,也因此丟失所有狀態。一旦旋轉螢幕,或是 process death,也會發生同樣的情形。

當我們寫下筆記 並開啟深色模式 筆記內容被清空
我們可以不使用 remember,改用 rememberSaveable。這樣即可儲存狀態,並撐過 configuration changes (如旋轉) 和 process death。

現在,我們把 titleValuenotesValue 外面的 remember 替換為 rememberSaveable

    var titleValue by rememberSaveable { mutableStateOf("") }
    var notesValue by rememberSaveable { mutableStateOf("") }

現在不論是旋轉畫面、切換為深色模式,或是被系統 kill process。除非我們之前曾經關掉 app,否則筆記內容不會再消失。

當我們寫下筆記 並開啟深色模式 筆記內容會留存

此系列文章是以我的業餘專案:Kimoji 為範例。

Kimoji 是一款心情日記 App,讓你用可愛的 emoji 來撰寫你的心情日記。現在就來試試這款設計精美的微日記吧!

https://ithelp.ithome.com.tw/upload/images/20220907/20151958vXuPLv4aki.png 立馬下載 https://ithelp.ithome.com.tw/upload/images/20220907/20151958LtM1NGErzK.png 限免兌換碼

Reference: https://developer.android.com/codelabs/jetpack-compose-basics


上一篇
State hoisting 的例子
下一篇
Compose Material 3 Theme
系列文
Kimoji:以 Jetpack Compose 實作一款「心情日記」應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言