[英]How do I listen to DataStore changes in ViewModel?
所以我正在制作一個應用程序,如果用戶選擇不同的位置,api 的查詢也應該立即改變並且應該返回新數據?
如何在視圖模型中實現流觀察器?
val cityName: String = settingsManager.cityName.first()
val countryName: String = settingsManager.countryName.first()
val response: Response<AladhanApiResponse> = repo.getAdhanTime(cityName, countryName)
您可以使用combine 運算符根據其他字段的更改創建響應流。 但是,您的其他字段(cityName、countryName)也必須是流。 您可以使用MutableStateFlow或其他一些邏輯在您的 settingsManager 中創建它們。
以下是創建響應流的方法,該響應流將在位置更改時自動更改:
val cityNameFlow = flowOf("London", "Barcelona").onEach { delay(100) } // Replace with flow of your cityName from settings
val countryName = flowOf("UK", "Spain").onEach { delay(150) } // Replace with flow of your countryName from settings
val responseFlow = combine(cityNameFlow, countryNameFlow) { cityName, countryName ->
getAdhanTime(cityName, countryName)
}
responseFlow.collect { response ->
// Called whenever new response is available (cityNameFlow or countryNameFlow changes)
println(response)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.