0

我怎么知道LazyColumn可以导航?

例如,一个列表包含 100 个元素,那么它是一个可以滚动的惰性列,我们显示一个向上滚动的 fab 按钮,但是当这个列表包含 5 个元素时,惰性列不可滚动并且FabButton不再需要。

4

1 回答 1

0

可以从 获取惰性列表布局信息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
}
于 2022-02-12T12:51:59.247 回答