Kotlin Compose 状态恢复 rememberSaveable 与 remember
Posted 安果移不动
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
点击修改数据 然后旋转屏幕
数据会变成修改之前的数值,。
以上是关于Kotlin Compose 状态恢复 rememberSaveable 与 remember的主要内容,如果未能解决你的问题,请参考以下文章
Jetpack Compose - 恢复 LazyColumn 滚动状态
Kotlin Jetpack Compose remember 给Icon添加透明度
Android Compose 版本与 Kotlin 版本的兼容问题