Tweak ReorderingLazyList code
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user