如何将其从 LiveData 迁移到 Android 上的 Kotlin Flow?

问题描述 投票:0回答:1

我是 Android 上的 Kotlin Flow 新手。 您能告诉我如何将此 LiveData 代码迁移到 Flow 吗?

class MyViewModel @Inject constructor(private val myRepository: MyRepository) : ViewModel() {
    val myData = MutableLiveData<Data?>(null)
    fun fetchData(query: String) {
        viewModelScope.launch(Dispatchers.IO) {
            myData.postValue(myRepository.fetchSuspend(query))
        }
    }
}
android kotlin android-livedata kotlin-flow
1个回答
4
投票

您必须使用

MutableStateFlow
而不是
MutableLiveData
来保存数据。
StateFlow
LiveData
类似,它向其观察者发出更新。

class MyViewModel @Inject constructor(private val myRepository: MyRepository) : ViewModel() {
    private val _myData = MutableStateFlow<Data?>(null)
    val myData: StateFlow<Data?> 
        get() = _myData.asStateFlow()

    fun fetchData(query: String) {
        viewModelScope.launch(Dispatchers.IO) {
            _myData.value = myRepository.fetchSuspend(query)
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.