【发布时间】:2023-01-04 22:20:28
【问题描述】:
大家好,我是 Jetpack Compose 的新手。 需要澄清有关 MutableStateFlow 在 jetpack compose 中的用法。
我在这里使用网络获取状态抽象类,它帮助我确定网络调用的状态。
// Abstract Class
abstract class NetworkFetchState(
val isLoading: Boolean = false,
val isSuccess: Boolean = false,
val isError: Boolean = false,
val error: Throwable? = null,
val errorMessage: String? = null
)
我正在创建扩展这个抽象类的数据类
data class LoginDataState(
val responseData: LoginResponse? = null
) : NetworkFetchState() // extending the Abstract Class
现在在 ViewModel 类中,我正在创建一个可变状态流
class MyViewModel:ViewModel(){
// Mutable State Flow of the Data State
private val _loginDataState = MutableStateFlow(LoginDataState())
// readonly value of the __loginDataState
val loginDataState: StateFlow<LoginDataState> get() = _loginDataState
/*
* Here I am performing network calls inside the view model scope
* based on the result from the network call i am trying to update the MutableStateFlow
*/
fun makeNetworkCall(){
// ....
_loginDataState.update { prevState ->
prevState.copy(
// ---- PROBLEM HERE ----
// isLoading, isSuccess.. etc (all other variables from abstract class)
// are not available
)
}
}
}
从抽象类扩展的所有成员变量都是不可见的。
我究竟做错了什么?
【问题讨论】:
标签: android kotlin android-jetpack-compose viewmodel jetpack-compose