Kotlin Compose 状态恢复 rememberSaveable 与 remember

rememberSaveable  可以保存数据状态。让在旋转屏幕的时候数据仍旧不发生改变

首先实现Parcelable接口

Kotlin 快速实现 Parcelable 接口_安果移不动的博客-CSDN博客

代码

package com.anguomob.jecpack.activity.compose.parcelable

import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.MaterialTheme.colors
import androidx.compose.material.Text
import androidx.compose.material.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.anguomob.jecpack.bean.City

@Composable
fun CityScreen() {
    val (city, setCity) = rememberSaveable {
        mutableStateOf(City("北京1", "中国1"))

    }
    Row(modifier = Modifier.padding(10.dp), verticalAlignment = Alignment.CenterVertically) {
        TextButton(onClick = {
            setCity(City("北京", "中国"))
        }, colors = ButtonDefaults.buttonColors()) {
            Text(text = "点击修改")

        }
        Text(text = "${city.name} ${city.country}")

    }
}

首先修改数据

然后旋转屏幕

你会发现数据没有发生变化

如果使用了

remember{}

点击修改数据 然后旋转屏幕

数据会变成修改之前的数值,。

猜你喜欢

转载自blog.csdn.net/mp624183768/article/details/125464076