未解决的参考:等待。Kotlin 协程

Kar*_*ol 1 android kotlin retrofit kotlin-coroutines coroutinescope

我正在尝试使用 Retrofit 2 和协程从 Api 获取数据。从我的 GetRepositoriesUseCase 中,我启动了协程,但“await()”函数是一个未解析的引用。

视图模型:

fun getRepositoryList()  {
    getRepositoriesUseCase(textLiveData.value.toString(), viewModelScope) { result ->
        result.onSuccess { repositoriesList.value = it }
        result.onFailure { show(it.message.toString()) }
    }
}
Run Code Online (Sandbox Code Playgroud)

获取存储库用例:

class GetRepositoriesUseCase(private val repository: ApiRepository) {

operator fun invoke(
    key: String,
    coroutineScope: CoroutineScope,
    onResult: (Result<Collection<Repository>>) -> Unit
) {
    coroutineScope.launch {
        val result = withContext(Dispatchers.IO) {
            runCatching { repository.getRepositories(key) }
        }
        onResult(result)
    }
}}
Run Code Online (Sandbox Code Playgroud)

ApiRepository(这里出现错误):

class ApiRepository(private val api: GitHubApi) {

fun getRepositories(key: String): Collection<Repository> {
    return api.getRepository(key).await().list
}}
Run Code Online (Sandbox Code Playgroud)

应用程序编程接口:

interface GitHubApi{

@GET("search/repositories")
fun getRepository(@Query("q") query: String)
}
Run Code Online (Sandbox Code Playgroud)

Tas*_*yan 6

我通过添加此依赖项解决了这个问题:

implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.1.1'
Run Code Online (Sandbox Code Playgroud)