Неразрешенная ссылка: asLiveData при преобразовании потока в LiveData - PullRequest
0 голосов
/ 24 апреля 2020

У меня следующая ситуация:

Это мой класс хранилища:

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()

}

И есть класс результата:

sealed class Result<out R> {

    data class Success<out T>(val data: T) : Result<T>()

    object Loading : Result<Nothing>()

    object Error : Result<Nothing>()

}

Итак, когда я пытаюсь преобразовать Поток Репозитория в LiveData с помощью метода asLiveData, asLiveData подчеркивается, и студия пишет, что это неразрешенная ссылка. Но я не могу понять, почему это происходит, так как репозиторий возвращает Flow. Итак, какова проблема и как я могу ее решить?

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Я думаю, что вам не хватает зависимости LiveData.

def lifecycle_version = "2.2.0"

// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"

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

1 голос
/ 25 апреля 2020

У вас отсутствует зависимость:

implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"

(или любая более поздняя версия)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...