๋ชฉ์ฐจ
๋ฌธ์ ์์๋ณด๊ธฐ
๋ฌธ์
์ง๋ ๋ฒ์ ๋จ์ ๊ธ์ก์ด ์ ์ฅ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์๋ค.
์์ธ
var chargedMoney by mutableIntStateOf(0) private set
mutableStateOf๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ๋ฅผ ๋ํ๋ด๋ ๋ฐฉ์์ด์ง๋ง ๊ตฌ์ฑ ๋ณ๊ฒฝ ์์๋ ์ด๊ธฐํ๊ฐ ๋๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค.
๋ฐ๋ผ์ ์ด์ ์ ์ ์ฅํ ๋จ์ ๊ฐ์ด ์์ค๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด์๋ค.
ํด๊ฒฐ
ํด๊ฒฐํ๊ธฐ ์ํด์๋ mutableStateOf ๋์ DataStore ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์ฝ๊ณ ๊ตฌ์ฑ ๋ณ๊ฒฝ ์์๋ ๋ฐ์ดํฐ๊ฐ ๋ณด์กด๋๋๋ก ํ ์ ์๋ค.
๊ฒฐ๊ณผ
์ฝ๋๋ก ์์๋ณด๊ธฐ
์ด์ ์ฝ๋
private suspend fun saveChargedMoney(value:Int) {
dataStore.edit { preferences ->
preferences[PreferencesKeys.CHARGED_MONEY] = value }
}
var chargedMoney by mutableIntStateOf(0)
private set
fun updateChargedMoney(input: Int) {
viewModelScope.launch {
chargedMoney += input
saveChargedMoney(chargedMoney)
}
}
์์ ๋ ์ฝ๋
fun updateChargedMoney(input: Int) {
viewModelScope.launch {
dataStore.edit { preferences ->
val currentChargedMoney = preferences[PreferencesKeys.CHARGED_MONEY] ?: 0
val newChargedMoney = currentChargedMoney + input
preferences[PreferencesKeys.CHARGED_MONEY] = newChargedMoney
}
}
}
๋ณ๊ฒฝ๋ ๋ถ๋ถ : chargedMoney ๊ฐ์ ์ ๋ฐ์ดํธํ ๋ ์ ์ฅํ๋ ๋ฐฉ์
์๋ ์ฝ๋
mutableIntStateOf๋ฅผ ํตํด chargedMoney๋ฅผ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ํ๋ฅผ ๋ํ๋ด์๋ค. mutableState๋ ui ์ํ๋ฅผ ์ ์ฅํ๊ณ ๋ณ๊ฒฝํ ์ ์์ง๋ง, ์ฑ์ด ์ข ๋ฃ๋๊ฑฐ๋ ๊ตฌ์ฑ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋ฉด ์ํ๊ฐ ์ด๊ธฐํ๋๊ณ ์ฌ์ค์ ๋๋ค.
์ด๋ก ์ธํด ๋จ์ ๊ธ์ก์ด ๋ค์ ์ด๊ธฐํ๋ ํ ์ฑ์์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด์๋ค.
์์ ๋ ์ฝ๋
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ mutableState์ธ chargedMoney๋ฅผ ์ง์ ์ฌ์ฉํ์ง ์๊ณ DataStore์์ ๊ฐ์ ์ฝ์ด์ ์ ๋ฐ์ดํธํด์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์๋ค. ๊ตฌ์ฑ ๋ณ๊ฒฝ์ด ๋ฐ์ํ๋๋ผ๋ ๋จ์ ๊ธ์ก์ ์ ๋ฐ์ดํธํ ๋ ์ด๊ธฐํ๋์ง ์๊ณ ์ฑ์์ง ๊ธ์ก์ธ input์ ๋ฐ์ํ ์ ์๋ค.
dataStore.edit ํจ์๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ํธ๋์ญ์ ๋ฐฉ์์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์๋ค.
1๏ธโฃ ํ์ฌ dataStore์ ์ ์ฅ๋ ๋จ์ ๊ธ์ก ๊ฐ์ ๊ฐ์ ธ์ currentCHargedMoney ๋ณ์์ ์ ์ฅํ๋ค.
2๏ธโฃ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ์ฑ์ด ๊ธ์ก ๊ฐ์ธ input์ ๋ํ ํ newChargedMoney ๋ณ์์ ๋ฃ์ด์ค๋ค.
3๏ธโฃ dataStore์ newChargedMoney๊ฐ์ ์ ์ฅํด์ค๋ค.
'๐ค2024 ์๋๋ก์ด๋ > ๊ธฐ์์ฌ ํ๋ก์ ํธ ๊ธฐ๋ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐android compose์์ ๋ ์จ api๋ฅผ ์ฐ๋ํด๋ณด์! (0) | 2024.02.01 |
---|---|
android Flow ์์๋ณด๊ธฐ (2) | 2024.01.21 |
compose์ preferences datastore ์ด์ฉํ๊ธฐ (1) | 2024.01.18 |
kotlin coroutines basic ๊ณต์๋ฌธ์ ์ฝ์ด๋ณด๊ธฐ (0) | 2024.01.17 |
๐ Android FCM ์ ์ฉ๊ธฐ 2ํ : FCM + Retrofit (0) | 2024.01.07 |