用kotlin流量和密封等级控制喷气背包组合状态



开发者你好,我是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*/}
}

最新更新