@@ -13,13 +13,16 @@ import androidx.compose.material.icons.Icons
1313import androidx.compose.material.icons.outlined.KeyboardArrowDown
1414import androidx.compose.runtime.Composable
1515import androidx.compose.runtime.getValue
16+ import androidx.compose.runtime.mutableStateOf
1617import androidx.compose.runtime.remember
1718import androidx.compose.runtime.rememberCoroutineScope
19+ import androidx.compose.runtime.setValue
1820import androidx.compose.ui.Alignment
1921import androidx.compose.ui.Modifier
2022import androidx.compose.ui.draw.alpha
2123import androidx.compose.ui.focus.FocusRequester
2224import androidx.compose.ui.graphics.ColorFilter
25+ import androidx.compose.ui.graphics.graphicsLayer
2326import androidx.compose.ui.platform.LocalContext
2427import androidx.compose.ui.platform.LocalDensity
2528import androidx.compose.ui.platform.LocalSoftwareKeyboardController
@@ -57,8 +60,6 @@ internal fun ConversationMessages(
5760 val uriHandler = LocalUriHandler .current
5861 val context = LocalContext .current
5962
60- val density = LocalDensity .current
61-
6263 Box (
6364 modifier = modifier,
6465 ) {
@@ -127,16 +128,10 @@ internal fun ConversationMessages(
127128 val currentIndex = lazyListState.firstVisibleItemIndex
128129 val distance = abs(itemIndex - currentIndex)
129130
130- // Calculate the center offset
131- val centerOffset = with (density) {
132- val viewportHeight = lazyListState.layoutInfo.viewportSize.height.toDp()
133- viewportHeight.roundToPx() / 2
134- }
135-
136131 if (distance <= 100 ) {
137- lazyListState.animateScrollToItem(itemIndex, scrollOffset = - centerOffset )
132+ lazyListState.animateScrollToItem(itemIndex)
138133 } else {
139- lazyListState.scrollToItem(itemIndex, scrollOffset = - centerOffset )
134+ lazyListState.scrollToItem(itemIndex)
140135 }
141136
142137 }
@@ -146,19 +141,11 @@ internal fun ConversationMessages(
146141 }
147142 )
148143
149-
150- val canJumpToBottom = remember(lazyListState.canScrollBackward) {
151- lazyListState.canScrollBackward
152- }
153-
154- val alpha by animateFloatAsState(
155- targetValue = if (canJumpToBottom) 1f else 0f ,
156- label = " show/hide jump-to-bottom"
157- )
158-
159144 Surface (
160145 modifier = Modifier
161- .alpha(alpha)
146+ .graphicsLayer {
147+ alpha = if (lazyListState.canScrollBackward) 1f else 0f
148+ }
162149 .padding(
163150 end = CodeTheme .dimens.inset,
164151 bottom = CodeTheme .dimens.inset
0 commit comments