我是 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))
}
}
}
您必须使用
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)
}
}
}