Exposed下拉菜单勾选选项后统计数据需关闭菜单才更新的问题求助
Exposed下拉菜单勾选选项后统计数据需关闭菜单才更新的问题求助
大家好,我最近在做一个统计界面,用Jetpack Compose的ExposedDropdownMenu做筛选器,遇到个头疼的问题想请教下:
界面里有个游戏类型的筛选下拉框,每个游戏选项旁边都带复选框。初始状态所有复选框都是勾选的,统计数据会包含所有游戏。现在的需求是用户勾选/取消勾选游戏时,统计数据能实时更新,不用关闭下拉菜单就能看到变化。
目前的情况是:复选框的状态切换正常,而且我用调试工具确认过,统计数据的逻辑在勾选变化时确实已经更新了,但界面上的统计数值必须等我把下拉菜单关掉之后才会刷新出来,这完全不符合预期的交互效果。
我的核心代码如下:
val selectedGame = remember { SnapshotStateList<String>() } ExposedDropdownMenuBox( expanded = expandedGame, onExpandedChange = { onExpandGameChange(it) }, ) { ShowOutlinedTextField( readOnly = true, value = stringResource(id = R.string.game_filter), modifier = Modifier .padding(10.dp) .menuAnchor(type = MenuAnchorType.PrimaryNotEditable, enabled = true) ) ExposedDropdownMenu( expanded = expandedGame, onDismissRequest = { onExpandGameChange(false) } ) { gameNames.forEach { game -> DropdownMenuItem( onClick = { onExpandGameChange(false) }, text = { Row( verticalAlignment = Alignment.CenterVertically ) { Checkbox( checked = selectedGame.contains(game.gameName), onCheckedChange = { isChecked -> if (isChecked) { selectedGame.add(game.gameName) } else { selectedGame.remove(game.gameName) } setSelectedGames(selectedGame.toList()) } ) Spacer(modifier = Modifier.width(8.dp)) Text(text = game.gameName) } } ) } } }
我之前试过手动加一个强制重组的变量来触发界面刷新,代码如下,但并没有解决问题:
var forceRecomposition by remember { mutableStateOf(0) } Checkbox( checked = selectedLocations.contains(casino.name), onCheckedChange = { isChecked -> if (isChecked) { selectedLocations.add(casino.name) } else { selectedLocations.remove(casino.name) } setSelectedCasinos(selectedLocations.toList()) forceRecomposition++ } )
有没有大佬能帮我看看问题出在哪,怎么才能让统计数据在勾选变化时实时显示出来呢?
备注:内容来源于stack exchange,提问作者JD74
相关产品推荐
相关产品推荐

