From 1984af8203e9f3af01717623475d3fa917bfbeec Mon Sep 17 00:00:00 2001 From: Sad Ellie Date: Fri, 19 Aug 2022 20:35:53 +0300 Subject: [PATCH] Fixed performance issues while scrolling units list --- .../unitto/screens/second/SecondScreen.kt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreen.kt b/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreen.kt index e420750a..2d4f3e68 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreen.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreen.kt @@ -37,6 +37,9 @@ import androidx.compose.material3.rememberTopAppBarState import androidx.compose.material3.surfaceColorAtElevation import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalFocusManager @@ -76,16 +79,13 @@ fun LeftSideScreen( val focusManager = LocalFocusManager.current val elevatedColor = MaterialTheme.colorScheme.surfaceColorAtElevation(3.dp) + val needToTint by remember { + derivedStateOf { scrollBehavior.state.overlappedFraction > 0.01f } + } + val chipsBackground = animateColorAsState( - if (scrollBehavior.state.overlappedFraction > 0.01f) { - elevatedColor - } else { - MaterialTheme.colorScheme.surface - }, - animationSpec = tween( - durationMillis = 500, - easing = LinearOutSlowInEasing - ) + if (needToTint) elevatedColor else MaterialTheme.colorScheme.surface, + tween(durationMillis = 500, easing = LinearOutSlowInEasing) ) Scaffold(