目前,我们正在使用
SDUI
开发一个应用程序。其中,在父屏幕映射器上,我们放置 Scaffold
和 LazyColumn
。在子级小部件映射器上,我们放置 items
。
我们在
item
内有条件 LazyColumn
可见性。如果条件不匹配,我们不会展示该商品。由于 LazyColumn
内部的条件逻辑并具有 verticalArrangement
,这会在下一项之间产生额外的间隙(如屏幕截图所示)。
作为一个简单的演示,我在下面放置了简单的逻辑。由于
verticalArrangement
spacing
,因此提供了额外的间距。
问题:有没有办法检测子项是否未添加并避免使用垂直间距?我知道我们可以使用子级别的间距来修复它,但由于应用程序上的架构安排,我们无法做到这一点。
// Scaffold and LazyColumn are on screen level
Scaffold {
LazyColumn(
modifier = Modifier.padding(it),
// Can not remove verticalArrangement because of code architectural arrangement
verticalArrangement = Arrangement.spacedBy(12.dp)
) {
for (i in 1..5) {
// item is in widget level
item {
if (i != 4) {
Item("Title: $i")
}
}
}
}
}
问题是,当你让它不可见时,你仍然会创建一个
item
。相反,您应该通过将条件移到item
之外来完全删除该项目:
if (i != 4) {
item {
Item("Title: $i")
}
}