RememberSaveableWithSerializer
@Sampled
@Composable
fun RememberSaveableWithSerializer() {
val holder = rememberSerializable(serializer = HolderSerializer) { Holder(0) }
}
RememberSaveableWithSerializerAndMutableState
@Sampled
@Composable
fun RememberSaveableWithSerializerAndMutableState() {
val holder =
rememberSerializable(stateSerializer = HolderSerializer) { mutableStateOf(Holder(0)) }
}
private data class Holder(var value: Int)
private val HolderSaver = Saver<Holder, Int>(save = { it.value }, restore = { Holder(it) })
private object HolderSerializer : KSerializer<Holder> {
private val valueSerializer = Int.serializer()
override val descriptor =
buildClassSerialDescriptor(Holder::class.qualifiedName!!) {
element("value", PrimitiveSerialDescriptor("value", PrimitiveKind.INT))
}
override fun serialize(encoder: Encoder, value: Holder) {
encoder.encodeSerializableValue(valueSerializer, value.value)
}
override fun deserialize(decoder: Decoder): Holder =
Holder(decoder.decodeSerializableValue(valueSerializer))
}