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)
我通过添加此依赖项解决了这个问题:
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.1.1'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3971 次 |
| 最近记录: |