fix(AppBar): Wrap scroll behaviour with remember { }

This commit is contained in:
Ahmad Ansori Palembani 2025-01-10 11:06:11 +07:00
parent c9a90f6847
commit c6da3325b3
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6

View file

@ -30,6 +30,7 @@ import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.material3.TopAppBarState import androidx.compose.material3.TopAppBarState
import androidx.compose.material3.rememberTopAppBarState import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.remember
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.SideEffect import androidx.compose.runtime.SideEffect
@ -546,22 +547,21 @@ fun enterAlwaysCollapsedScrollBehavior(
snapAnimationSpec: AnimationSpec<Float>? = spring(stiffness = Spring.StiffnessMediumLow), snapAnimationSpec: AnimationSpec<Float>? = spring(stiffness = Spring.StiffnessMediumLow),
flingAnimationSpec: DecayAnimationSpec<Float>? = rememberSplineBasedDecay() flingAnimationSpec: DecayAnimationSpec<Float>? = rememberSplineBasedDecay()
): TopAppBarScrollBehavior { ): TopAppBarScrollBehavior {
val topHeightPx: Float return remember(state, canScroll, isAtTop, snapAnimationSpec, flingAnimationSpec) {
val totalHeightPx: Float val (topHeightPx, totalHeightPx) = with(LocalDensity.current) {
LocalDensity.current.run { CollapsedContainerHeight.toPx() to ExpandedContainerHeight.toPx()
topHeightPx = CollapsedContainerHeight.toPx() }
totalHeightPx = ExpandedContainerHeight.toPx()
}
return EnterAlwaysCollapsedScrollBehavior( EnterAlwaysCollapsedScrollBehavior(
state = state, state = state,
snapAnimationSpec = snapAnimationSpec, snapAnimationSpec = snapAnimationSpec,
flingAnimationSpec = flingAnimationSpec, flingAnimationSpec = flingAnimationSpec,
canScroll = canScroll, canScroll = canScroll,
isAtTop = isAtTop, isAtTop = isAtTop,
topHeightPx = topHeightPx, topHeightPx = topHeightPx,
totalHeightPx = totalHeightPx, totalHeightPx = totalHeightPx,
) )
}
} }
private class EnterAlwaysCollapsedScrollBehavior( private class EnterAlwaysCollapsedScrollBehavior(