Flow가 받은 값을 데이터로 변환하기 위해 Mutable LiveData로 변환

어렵게 생각했지만 간단해서 기본적으로 혼잣말을 했다.
4
package sobaya.tools.flow_to_mutablelivedata

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.launch

fun <T> ViewModel.flowToMutableLiveData(flow: Flow<T>): MutableLiveData<T> {
    val liveData = MutableLiveData<T>()
    viewModelScope.launch {
        liveData.postValue(flow.firstOrNull())
    }

    return liveData
}
API에서 받은 플로우 콘텐츠를 화면과 결합할 때 사용합니다.

사용법


4
private val request = repository.getRepo("sobaya-0141")
val test = flowToMutableLiveData(request.map { it.body()?.getOrNull(0)?.name })
화면과 데이터로 테스트를 연결한다.

좋은 웹페이지 즐겨찾기