Tweak ReorderingLazyList code

This commit is contained in:
vfsfitvnm
2022-08-26 16:33:39 +02:00
parent 97707d724d
commit e41bca11c3
2 changed files with 22 additions and 18 deletions

View File

@@ -27,7 +27,6 @@ fun ReorderingLazyColumn(
) { ) {
ReorderingLazyList( ReorderingLazyList(
modifier = modifier, modifier = modifier,
state = reorderingState.lazyListState,
reorderingState = reorderingState, reorderingState = reorderingState,
contentPadding = contentPadding, contentPadding = contentPadding,
flingBehavior = flingBehavior, flingBehavior = flingBehavior,

View File

@@ -33,7 +33,6 @@ import androidx.compose.foundation.lazy.rememberLazyListItemProvider
import androidx.compose.foundation.overscroll import androidx.compose.foundation.overscroll
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.snapshots.Snapshot import androidx.compose.runtime.snapshots.Snapshot
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@@ -49,7 +48,6 @@ import androidx.compose.ui.unit.offset
@Composable @Composable
internal fun ReorderingLazyList( internal fun ReorderingLazyList(
modifier: Modifier, modifier: Modifier,
state: LazyListState,
reorderingState: ReorderingState, reorderingState: ReorderingState,
contentPadding: PaddingValues, contentPadding: PaddingValues,
reverseLayout: Boolean, reverseLayout: Boolean,
@@ -63,16 +61,16 @@ internal fun ReorderingLazyList(
content: LazyListScope.() -> Unit content: LazyListScope.() -> Unit
) { ) {
val overscrollEffect = ScrollableDefaults.overscrollEffect() val overscrollEffect = ScrollableDefaults.overscrollEffect()
val itemProvider = rememberLazyListItemProvider(state, content) val itemProvider = rememberLazyListItemProvider(reorderingState.lazyListState, content)
val scope = rememberCoroutineScope() val placementAnimator = remember(reorderingState.lazyListState, isVertical) {
val placementAnimator = remember(state, isVertical) { LazyListItemPlacementAnimator(reorderingState.coroutineScope, isVertical).also {
LazyListItemPlacementAnimator(scope, isVertical) reorderingState.lazyListState.placementAnimator = it
}
} }
state.placementAnimator = placementAnimator
val measurePolicy = rememberLazyListMeasurePolicy( val measurePolicy = rememberLazyListMeasurePolicy(
itemProvider, itemProvider,
state, reorderingState.lazyListState,
reorderingState.lazyListBeyondBoundsInfo, reorderingState.lazyListBeyondBoundsInfo,
overscrollEffect, overscrollEffect,
contentPadding, contentPadding,
@@ -88,19 +86,26 @@ internal fun ReorderingLazyList(
val orientation = if (isVertical) Orientation.Vertical else Orientation.Horizontal val orientation = if (isVertical) Orientation.Vertical else Orientation.Horizontal
LazyLayout( LazyLayout(
modifier = modifier modifier = modifier
.then(state.remeasurementModifier) .then(reorderingState.lazyListState.remeasurementModifier)
.then(state.awaitLayoutModifier) .then(reorderingState.lazyListState.awaitLayoutModifier)
.lazyListSemantics( .lazyListSemantics(
itemProvider = itemProvider, itemProvider = itemProvider,
state = state, state = reorderingState.lazyListState,
coroutineScope = scope, coroutineScope = reorderingState.coroutineScope,
isVertical = isVertical, isVertical = isVertical,
reverseScrolling = reverseLayout, reverseScrolling = reverseLayout,
userScrollEnabled = userScrollEnabled userScrollEnabled = userScrollEnabled
) )
.clipScrollableContainer(orientation) .clipScrollableContainer(orientation)
.lazyListBeyondBoundsModifier(state, reorderingState.lazyListBeyondBoundsInfo, reverseLayout) .lazyListBeyondBoundsModifier(
.lazyListPinningModifier(state, reorderingState.lazyListBeyondBoundsInfo) state = reorderingState.lazyListState,
beyondBoundsInfo = reorderingState.lazyListBeyondBoundsInfo,
reverseLayout = reverseLayout
)
.lazyListPinningModifier(
state = reorderingState.lazyListState,
beyondBoundsInfo = reorderingState.lazyListBeyondBoundsInfo
)
.overscroll(overscrollEffect) .overscroll(overscrollEffect)
.scrollable( .scrollable(
orientation = orientation, orientation = orientation,
@@ -109,13 +114,13 @@ internal fun ReorderingLazyList(
orientation, orientation,
reverseLayout reverseLayout
), ),
interactionSource = state.internalInteractionSource, interactionSource = reorderingState.lazyListState.internalInteractionSource,
flingBehavior = flingBehavior, flingBehavior = flingBehavior,
state = state, state = reorderingState.lazyListState,
overscrollEffect = overscrollEffect, overscrollEffect = overscrollEffect,
enabled = userScrollEnabled enabled = userScrollEnabled
), ),
prefetchState = state.prefetchState, prefetchState = reorderingState.lazyListState.prefetchState,
measurePolicy = measurePolicy, measurePolicy = measurePolicy,
itemProvider = itemProvider itemProvider = itemProvider
) )