Где найти строительный блок liveData? - PullRequest
1 голос
/ 23 мая 2019

https://developer.android.com/topic/libraries/architecture/coroutines

Документация

Android coroutines plus liveData гласит, что мы можем использовать функцию компоновщика liveData в случае, если мы хотим выполнять асинхронные операции внутри функции живых данных

val user: LiveData<User> = liveData {
    val data = database.loadUser() // loadUser is a suspend function.
    emit(data)
}
val user: LiveData<Result> = liveData {
    emit(Result.loading())
    try {
        emit(Result.success(fetchUser())
    } catch(ioException: Exception) {
        emit(Result.error(ioException))
    }
}

Я попытался установить библиотеку lifecycle-viewmodel-ktx, но не смог найти этот блок.

Где это находится?

1 Ответ

1 голос
/ 25 мая 2019

Попробуйте:

implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0-alpha01'

Функция живет здесь: https://android.googlesource.com/platform/frameworks/support/+/refs/heads/androidx-master-dev/lifecycle/livedata/ktx/src/main/java/androidx/lifecycle/CoroutineLiveData.kt

И (в настоящее время) определяется как:

@UseExperimental(ExperimentalTypeInference::class)
fun <T> liveData(
    context: CoroutineContext = EmptyCoroutineContext,
    timeoutInMs: Long = DEFAULT_TIMEOUT,
    @BuilderInference block: suspend LiveDataScope<T>.() -> Unit
): LiveData<T> = CoroutineLiveData(context, timeoutInMs, block)
...