我怎么知道LazyColumn
可以导航?
例如,一个列表包含 100 个元素,那么它是一个可以滚动的惰性列,我们显示一个向上滚动的 fab 按钮,但是当这个列表包含 5 个元素时,惰性列不可滚动并且FabButton
不再需要。
我怎么知道LazyColumn
可以导航?
例如,一个列表包含 100 个元素,那么它是一个可以滚动的惰性列,我们显示一个向上滚动的 fab 按钮,但是当这个列表包含 5 个元素时,惰性列不可滚动并且FabButton
不再需要。
可以从 获取惰性列表布局信息state
,传递给LazyColumn
.
在我的示例中,我使用它derivedStateOf
来防止多余的重组 - 只有当值实际发生变化时才会导致重组。在没有或副作用函数的情况下读取LazyColumn
状态信息可能会导致严重的性能问题。derivedStateOf
在这种情况下,最基本的逻辑是检查第一个元素是否已滚动:
val canScrollToTop by remember {
derivedStateOf {
state.layoutInfo.visibleItemsInfo.run {
isNotEmpty() && (first().index > 0 || first().offset < 0)
}
}
}
LazyColumn(state = state) {
// ...
}
if (canScrollToTop) {
// your button
}