开发者你好,我是jetpack撰写的新手,我没有问题关于用协程和XML控制状态,然后我试图在jetpack compose中做同样的事情,但它没有工作。我的问题是如何从jetpack compose中的视图模型类收集密封状态的数据。这个函数,我想收集数据在我的UI撰写
fun getData()= flow<Resource<List<Task>>>
{
val accessToken=savedTokenClass.getSaveToken()
emit(Resource.Loading())
val result = authRepository.getUserTask()
if (result.code() == 201) {
emit(Resource.Success(result.body())
}
else {
emit(Resource.Error(result.message()))
}
}
this my sealed class
class Sealed open class Resource<T>() {
class Success< T>(val data: T) : Resource<T>()
class Loading<out >: Resource<out>()
data class Error< T>(val message: String, ) : Resource<T>()
}
在可组合函数中试试:注意:这里的resources
指的是资源密封类的对象,它将在viewModel本身中声明。
private val viewModel: ViewModelClassName by viewModels()
val resourceState by remember(viewModel) { viewModel.resources}.collectAsState()
when(resourceState){
is Resource.Loading->{/*TODO*/}
is Resource.SUCCESS->{/*TODO*/}
is Resource.Error->{/*TODO*/}
}