Refactoring: move Scaffold into CameraScreen

This commit is contained in:
Pierre-Yves Nicolas
2025-06-24 15:05:15 +02:00
parent 1159b77c6e
commit 46e84da804
2 changed files with 58 additions and 65 deletions

View File

@@ -26,10 +26,7 @@ import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.core.content.FileProvider
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -54,19 +51,16 @@ class MainActivity : ComponentActivity() {
val pageIds by viewModel.pageIds.collectAsStateWithLifecycle()
val context = LocalContext.current
MyScanTheme {
Column {
when (val screen = currentScreen) {
is Screen.Camera -> {
Scaffold { innerPadding->
CameraScreen(
viewModel, liveAnalysisState,
viewModel,
liveAnalysisState,
onImageAnalyzed = { image -> viewModel.liveAnalysis(image) },
onFinalizePressed = { viewModel.navigateTo(Screen.FinalizeDocument()) },
modifier = Modifier.padding(innerPadding)
)
}
}
is Screen.FinalizeDocument -> {
DocumentScreen (
pageIds,

View File

@@ -40,6 +40,7 @@ import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
@@ -77,7 +78,6 @@ fun CameraScreen(
liveAnalysisState: LiveAnalysisState,
onImageAnalyzed: (ImageProxy) -> Unit,
onFinalizePressed: () -> Unit,
modifier: Modifier,
) {
var previewView by remember { mutableStateOf<PreviewView?>(null) }
val pageIds by viewModel.pageIds.collectAsStateWithLifecycle()
@@ -101,9 +101,7 @@ fun CameraScreen(
listState.animateScrollToItem(pageIds.lastIndex)
}
}
CameraScreenContent(
modifier,
CameraScreenScaffold(
cameraPreview = {
CameraPreview(
onImageAnalyzed = onImageAnalyzed,
@@ -132,15 +130,15 @@ fun CameraScreen(
}
@Composable
private fun CameraScreenContent(
modifier: Modifier,
private fun CameraScreenScaffold(
cameraPreview: @Composable () -> Unit,
pageList: @Composable () -> Unit,
cameraUiState: CameraUiState,
onCapture: () -> Unit,
onFinalizePressed: () -> Unit,
) {
Box(modifier = modifier.fillMaxSize()) {
Scaffold { innerPadding ->
Box(modifier = Modifier.padding(innerPadding).fillMaxSize()) {
CameraPreviewWithOverlay(cameraPreview, cameraUiState)
MessageBox(cameraUiState.liveAnalysisState.inferenceTime)
@@ -161,7 +159,8 @@ private fun CameraScreenContent(
cameraUiState.captureState.processedImage?.let {
Surface(
color = Color.Black.copy(alpha = 0.3f),
modifier = Modifier.fillMaxSize())
modifier = Modifier.fillMaxSize()
)
{}
Image(
bitmap = it.asImageBitmap(),
@@ -171,6 +170,7 @@ private fun CameraScreenContent(
}
}
}
}
@Composable
fun CaptureButton(onClick: () -> Unit, modifier: Modifier) {
@@ -292,8 +292,7 @@ fun CameraScreenPreviewWithProcessedImage() {
private fun ScreenPreview(captureState: CaptureState) {
val context = LocalContext.current
MyScanTheme {
CameraScreenContent(
modifier = Modifier,
CameraScreenScaffold(
cameraPreview = {
Box(
modifier = Modifier