[英]Update of StateFlow not propagating to the Jetpack Compose UI
我正在 Android 上嘗試 Jetpack Compose,在一個超小型游戲應用程序上使用視圖模型和 StateFlow,並且我遵循了代碼實驗室,但是當我更新我的 state 時,UI 上沒有任何反應。 我確定我錯過了一些愚蠢的東西,但我看不到它。 這是我在視圖 model 中的代碼:
private val _uiState = MutableStateFlow(HomeScreenState())
val uiState = _uiState.asStateFlow()
...
private fun popLists() {
uiState.value.apply {
currentLetters = lettersList.pop()
where = wordPartsList.pop()
}
}
在我做的應用程序的屏幕上
val gameUiState by viewModel.uiState.collectAsState()
然后在作文中
BombDisplay(gameUiState.currentLetters, context)
BombDisplay 是一個簡單的自定義可組合項,包含具有預定樣式和背景的文本。 “HomeScreenState”也是一個簡單的數據 class,其中包含幾個字符串。
還有一個按鈕,按下時會從調用“popList”function 的視圖模型調用公共方法。我用調試器跟蹤了整個過程,它確實有效,但用戶界面似乎沒有意識到數據的變化。
我已經從各種代碼實驗室和教程中追溯了所有步驟,但我不知道錯誤在哪里。
問題出在 popLists 方法中。 你應該傳遞新值而不是更新舊值,就像這樣:
private fun popLists() {
val newState = uiState.value.copy(
currentLetters = lettersList.pop(),
where = wordPartsList.pop()
)
uiState.value = newState
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.