Skip to content

Commit 2452e1d

Browse files
committed
CameraScreen: scroll automatically to newly added page
1 parent c49a271 commit 2452e1d

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

app/src/main/java/org/mydomain/myscan/view/CameraScreen.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@ import androidx.compose.foundation.layout.height
3535
import androidx.compose.foundation.layout.padding
3636
import androidx.compose.foundation.layout.size
3737
import androidx.compose.foundation.layout.width
38+
import androidx.compose.foundation.lazy.LazyListState
3839
import androidx.compose.foundation.lazy.LazyRow
3940
import androidx.compose.foundation.lazy.itemsIndexed
41+
import androidx.compose.foundation.lazy.rememberLazyListState
4042
import androidx.compose.foundation.shape.CircleShape
4143
import androidx.compose.foundation.shape.RoundedCornerShape
4244
import androidx.compose.material3.Button
@@ -97,6 +99,13 @@ fun CameraScreen(
9799
}
98100
}
99101

102+
val listState = rememberLazyListState()
103+
LaunchedEffect(pageIds.size) {
104+
if (pageIds.isNotEmpty()) {
105+
listState.animateScrollToItem(pageIds.lastIndex)
106+
}
107+
}
108+
100109
CameraScreenContent(
101110
modifier,
102111
cameraPreview = {
@@ -110,7 +119,8 @@ fun CameraScreen(
110119
CameraCapturedPagesRow(
111120
pageIds = pageIds,
112121
imageLoader = { id -> viewModel.getBitmap(id) },
113-
onPageClick = { index -> viewModel.navigateTo(Screen.FinalizeDocument(index)) }
122+
onPageClick = { index -> viewModel.navigateTo(Screen.FinalizeDocument(index)) },
123+
listState = listState
114124
)
115125
},
116126
cameraUiState = CameraUiState(pageIds.size, liveAnalysisState, captureState),
@@ -275,10 +285,12 @@ fun CameraCapturedPagesRow(
275285
pageIds: List<String>,
276286
imageLoader: (String) -> Bitmap?,
277287
onPageClick: (Int) -> Unit,
288+
listState: LazyListState,
278289
) {
279290
if (pageIds.isEmpty()) return
280291

281292
LazyRow (
293+
state = listState,
282294
modifier = Modifier
283295
.fillMaxWidth()
284296
.padding(horizontal = 8.dp, vertical = 4.dp),
@@ -347,7 +359,8 @@ private fun ScreenPreview(captureState: CaptureState) {
347359
BitmapFactory.decodeStream(input)
348360
}
349361
},
350-
onPageClick = {}
362+
onPageClick = {},
363+
listState = LazyListState()
351364
)
352365
},
353366
cameraUiState = CameraUiState(pageCount = 4, LiveAnalysisState(), captureState),

0 commit comments

Comments
 (0)