Vaibhav Jaiswal
01/12/2025, 6:00 AMContextualFlowRow
and i am facing a weird bug, i'm sure i followed the code same as whats there in the docs
Code and Stack Trace in thread 🧵Zach Klippenstein (he/him) [MOD]
01/12/2025, 2:14 PMVaibhav Jaiswal
01/12/2025, 2:17 PM@Composable
fun <T> ChipRow(
chips: List<T>,
maxLines: Int,
lineStepUpCount: Int = 4,
modifier: Modifier = Modifier,
horizontalArrangement: Arrangement.Horizontal = Arrangement.spacedBy(8.dp),
verticalArrangement: Arrangement.Vertical = Arrangement.spacedBy(0.dp),
expandOrCollapseIndicator: @Composable (Int, () -> Unit) -> Unit = { rem, onClick ->
AssistChip(
onClick = onClick,
label = {
val text = if (rem == 0) "Show Less" else "+ $rem"
Text(text = text)
},
colors = AssistChipDefaults.assistChipColors().copy(
labelColor = MaterialTheme.colorScheme.primary.copy(alpha = 0.6f)
),
border = BorderStroke(1.dp, MaterialTheme.colorScheme.primary.copy(alpha = 0.6f))
)
},
chip: @Composable (T) -> Unit,
) {
var maxLineCount by remember { mutableStateOf(maxLines) }
val expandOrCollapseIndicator: @Composable ContextualFlowRowOverflowScope.() -> Unit = {
val itemsLeft = totalItemCount - shownItemCount
expandOrCollapseIndicator(itemsLeft) {
if (itemsLeft == 0) maxLineCount = maxLines
else maxLineCount += lineStepUpCount
}
}
ContextualFlowRow(
itemCount = chips.size,
modifier = modifier.animateContentSize(),
horizontalArrangement = horizontalArrangement,
verticalArrangement = verticalArrangement,
maxLines = maxLineCount,
overflow = ContextualFlowRowOverflow.expandOrCollapseIndicator(
minRowsToShowCollapse = maxLines + 1,
collapseIndicator = expandOrCollapseIndicator,
expandIndicator = expandOrCollapseIndicator,
)
) {
chip(chips[it])
}
}
Now im getting this error and app crashes
java.lang.IllegalArgumentException: Key "true30" was already used. If you are using LazyColumn/Row please make sure you provide a unique key for each item
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:453)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$Scope.subcompose(SubcomposeLayout.kt:895)
at androidx.compose.foundation.layout.FlowMeasureLazyPolicy$measure$2.invoke(ContextualFlowLayout.kt:463)
Zach Klippenstein (he/him) [MOD]
01/12/2025, 2:17 PMcarbaj0
03/04/2025, 8:37 AMcarbaj0
03/04/2025, 9:01 AMcarbaj0
03/04/2025, 9:02 AMcarbaj0
03/04/2025, 9:14 AM@Deprecated("ContextualFlowLayouts are no longer maintained")
@Composable
@ExperimentalLayoutApi
fun ContextualFlowRow(
ok, hahaha