๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿค2024 ์•ˆ๋“œ๋กœ์ด๋“œ/๊ธฐ์ˆ™์‚ฌ ํ”„๋กœ์ ํŠธ ๊ธฐ๋ก

Compose์—์„œ ๊ตฌ์„ฑ๋ณ€๊ฒฝ ์‹œ ์ €์žฅ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ

by hyeonha 2024. 1. 21.

๋ชฉ์ฐจ

    ๋ฌธ์ œ ์•Œ์•„๋ณด๊ธฐ

    ๋ฌธ์ œ

    ์ง€๋‚œ ๋ฒˆ์— ๋‚จ์€ ๊ธˆ์•ก์ด ์ €์žฅ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

    ์›์ธ

    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๊ฐ’์„ ์ €์žฅํ•ด์ค€๋‹ค.

     

     

    728x90