在我的 Jetpack Compose 项目中,我的一个组件使用了FlowRow
来自Accompanist的组件。但我不知道如何FlowRow
滚动到给定的“节点”。
这是我的相关代码@Composable
:
sealed class MovesNavigatorElement(open val text: String)
data class MoveNumber(override val text: String) : MovesNavigatorElement(text)
data class HalfMoveSAN(override val text: String) : MovesNavigatorElement(text)
@Composable
fun MovesNavigator(modifier: Modifier = Modifier, elements: Array<MovesNavigatorElement>, mustBeVisibleByDefaultElementIndex: Int) {
val vertScrollState = rememberScrollState()
FlowRow(
modifier = modifier
.background(color = Color.Yellow.copy(alpha = 0.3f))
.verticalScroll(vertScrollState),
mainAxisSpacing = 10.dp,
crossAxisSpacing = 15.dp,
) {
elements.map {
Text(text = it.text, fontSize = 34.sp, color = Color.Blue, style= MaterialTheme.typography.body1)
}
}
}
您可以在其中看到我将 的“节点”声明FlowRow
为列表:参数elements
。我也在ScrollState
局部变量中使用 a vertScrollState
。
但是,假设我想让它滚动到elements[30]
:我应该怎么做?鉴于这是默认情况下必须可见mustBeVisibleByDefaultElementIndex
的元素的索引。我的意思是,当组合发生时。但是用户当然可以稍后更改位置。
换句话说 :
- At composition :给定索引的元素可见
- 然后,当然,在任何其他组合发生之前,用户可以使用滚动条滚动它。