Kra*_*tos 4 android kotlin kotlin-flow
我正在学习 kotlin flow 并慢慢地将我公司应用程序中的代码从 livedata 转换为 kotlin flow。所以我有疑问:
在我的视图模型中,我有这样的 livedata 变量“状态”:
var status: MutableLiveData = MutableLiveData()
我在 MainActivity 中观察到了它。
现在我想用 Flow 做同样的事情。我转换了所有发射/收集部件和其他部件,一切正常,但有一个问题。这是声明我的变量状态的一部分:
var status: MutableStateFlow<Status> = MutableStateFlow() -> 这段代码给出了错误。我需要传递括号中的参数值
所以我必须这样写:
var status: MutableStateFlow<Status> = MutableStateFlow(Status.Failure("adding value even though I don't want to"))
Run Code Online (Sandbox Code Playgroud)
谁能解释一下,有没有什么方法可以像以前一样在 livedata 中初始化它而不提供初始值?谢谢
你不能,可变的 stateFlow 需要一个初始值。
一种方法是将此值设置为可为空并用 null 初始化它。
但这是一个技巧,还有另一种使用通道并将其作为流接收的方法:
private val _status = Channel<Status>()
val status = statusChannel.receiveAsFlow()
Run Code Online (Sandbox Code Playgroud)