- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码
@Serializeable
class Car {
val speed = MutableStateFlow<Int>(0)
var isMoving: Boolean = false
}
问题是如何序列化MutableStateFlow?
最佳答案
您需要为 MutableStateFlow<Int>
创建专门的序列化程序.
要么基于@Tenfour04 建议的通用序列化器
object MutableStateFlowOfIntsSerializer :
KSerializer<MutableStateFlow<Int>> by MutableStateFlowSerializer(Int.serializer())
class MutableStateFlowSerializer<T>(private val dataSerializer: KSerializer<T>) : KSerializer<MutableStateFlow<T>> {
override val descriptor: SerialDescriptor = dataSerializer.descriptor
override fun serialize(encoder: Encoder, value: MutableStateFlow<T>) = dataSerializer.serialize(encoder, value.value)
override fun deserialize(decoder: Decoder) = MutableStateFlow(dataSerializer.deserialize(decoder))
}
或从头开始:
object MutableStateFlowOfIntsSerializer : KSerializer<MutableStateFlow<Int>> {
override val descriptor: SerialDescriptor = Int.serializer().descriptor
override fun serialize(encoder: Encoder, value: MutableStateFlow<Int>) =
Int.serializer().serialize(encoder, value.value)
override fun deserialize(decoder: Decoder) = MutableStateFlow(Int.serializer().deserialize(decoder))
}
并将其连接到 speed
领域:
@Serializable
class Car {
@Serializable(with = MutableStateFlowOfIntsSerializer::class)
val speed = MutableStateFlow(0)
var isMoving: Boolean = false
}
请注意,此序列化方法将序列化 speed
字段不管 encodeDefaults = false
设置
关于Kotlin 序列化 : How to serialize MutableStateFlow<Float>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68019188/
假设我有一个 MutableStateFlow多变的。三种情况的主要区别和用法是什么 mutable.value = 1 mutable.emit(2) mutable.update {3} 最佳答案
在 MutableStateFlow 上使用值结束发出乐趣有什么区别? fun main() = runBlocking { val mutable = MutableStateFlow(0)
如果更新的值等于旧值 (source) , MutableStateFlow 不会通知收集器。我为此找到了一个 workaround ,但它不能很好地扩展复杂值。 解决方法:使用 copy() 复制数
我正在研究 Kotlin MutableStateFlow/StateFlow 并想在通用基类中声明我的 MutableStateFlow 如下:- class MyBaseClass { priva
我有一个 android 应用程序,我在其中尝试使用协程流来使用我自己的 event bus library 替换现有的 Otto EventBus .在设置 MutableStateFlow 的值然
我有以下代码 @Serializeable class Car { val speed = MutableStateFlow(0) var isMoving: Boolean = fals
当我在另一个 fragment 中更改 GameData 的 isInFavorites 属性时,我可以看到我的存储库的监听器中收到了更改,但是当我导航回该 fragment 时,我的 View 模型
代码A来自官方示例代码here . 我想我可以直接将_uiState传递给uiState,所以我写了代码B,看来代码B可以很好地工作。 我可以将 MutableStateFlow 对象直接传递给 St
这是我的 FirebaseOTPVerificationOperation 类,其中定义了我的 MutableStateFlow 属性,并更改了值, @ExperimentalCoroutin
我有一个 MutableStateFlow> , var attendanceStates = MutableStateFlow>(arrayListOf()) private set 我的
我正在尝试使用以下代码: suspend fun SavedStateHandle.getStateFlow( key: String, initialValue: T? = get
我是一名优秀的程序员,十分优秀!