如何在ListDetailPaneScaffold详情面板显示未选中占位内容?
解决ListDetailPaneScaffold未选中项时显示占位地图的问题
你只需要调整detailPane的逻辑,不再依赖navigator.currentDestination?.content控制Map的渲染时机,改为始终渲染Map组件,根据是否有选中项传入对应参数即可:
ListDetailPaneScaffold( modifier = Modifier.fillMaxSize(), directive = navigator.scaffoldDirective, value = navigator.scaffoldValue, listPane = { AnimatedPane(modifier = Modifier.fillMaxWidth(0.1f)) { LinesList( lines = uiState.lines, selectedIndex = uiState.lines.indexOf(uiState.selectedLine), onItemClick = { index -> navigator.navigateTo(ListDetailPaneScaffoldRole.Detail, index) }, ) } }, detailPane = { AnimatedPane { // 始终渲染Map,根据是否有选中项传入对应数据 val selectedLine = navigator.currentDestination?.content?.let { index -> uiState.lines[index].also { vm.selectLine(it) } } Map(selectedItem = selectedLine) } }, )
最后需要确保你的Map组件支持接收null类型的selectedItem,当selectedItem为null时,仅加载基础空白地图、不绘制路线即可。
内容的提问来源于stack exchange,提问作者NullPointerException
相关产品推荐
相关产品推荐

