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添加透明度

Kotlin Compose 底部栏

Android Compose 版本与 Kotlin 版本的兼容问题

Android Compose 版本与 Kotlin 版本的兼容问题

Android Compose 版本与 Kotlin 版本的兼容问题