我在 DropdownMenu 上加载出价数据时遇到问题。 我的列表中有大约 500 个项目,然后我将其加载到下拉菜单中,这需要一些时间,而且很滞后。 如何在下拉菜单上进行异步显示? 显示一些数据计数,然后在后台加载附加数据或通过滚动加载?
val suggestions = viewModel.names.collectAsState().value
DropdownMenu(
modifier = Modifier
.fillMaxWidth()
.height(400.dp)
.background(MaterialTheme.colorScheme.background),
expanded = expanded,
onDismissRequest = { expanded = false },
properties = PopupProperties(focusable = false),
) {
suggestions.forEach { it ->
SuggestionWidget(
it!!.name
) {
}
}
}
这是 Jetpack Compose 的 DropdownMenu 实现的问题,因为它在幕后使用 Column 而不是 LazyColumn:https://issuetracker.google.com/issues/242398344
您可以尝试将 LazyColumn 添加到 DropdownMenu,但这会导致另一个问题:https://issuetracker.google.com/issues/203328119
Google 开发者的回复:https://issuetracker.google.com/issues/203328119#comment3
如果你确实需要在 DropdownMenu 中使用 LazyColumn (因为你 比如说,菜单中有数百个项目),不幸的是,唯一的 选项是复制组件实现。这样你就会 能够用 LazyColumn 替换可滚动的 Column。
状态:无法修复(预期行为)
另请参阅类似的问题:DropDownMenu 帧丢失和 Jetpack Compose 中的滞后