簡體   English   中英

如何收聽 ViewModel 中的 DataStore 更改?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM