【发布时间】:2020-08-08 13:07:57
【问题描述】:
我有以下情况:
这是我的存储库类:
import com.mikhailovskii.timesapp.util.Result
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.flow
class LoginRepository {
fun fetchUser() = flow {
emit(Result.Loading)
delay(1000)
emit(Result.Success((0..20).random()))
}
}
有 ViewModel 类:
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import com.mikhailovskii.timesapp.util.Result
class LoginViewModel() : ViewModel() {
private val loginRepository = LoginRepository()
private val a = loginRepository.fetchUser()
val user: LiveData<Result<Int>> get() = loginRepository.fetchUser().asLiveData()
}
还有 Result 类:
sealed class Result<out R> {
data class Success<out T>(val data: T) : Result<T>()
object Loading : Result<Nothing>()
object Error : Result<Nothing>()
}
因此,当我尝试借助 asLiveData 方法将存储库的流转换为 LiveData 时,asLiveData 带有下划线,工作室写道这是一个未解决的参考。但我不明白为什么会这样,因为存储库返回 Flow。那么,这是什么问题,我该如何解决呢?
【问题讨论】: