compose: onboarding: Add a skip and finish button at end pages

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-12-01 20:53:20 +08:00
parent 82ec033b0e
commit 1cabc95309
2 changed files with 22 additions and 8 deletions

View File

@@ -55,6 +55,10 @@ private fun ScreenContent(
val pagerState = rememberPagerState { pages.size } val pagerState = rememberPagerState { pages.size }
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
fun isFinalPage(): Boolean {
return pagerState.currentPage == (pagerState.pageCount - 1)
}
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBar( TopAppBar(
@@ -89,15 +93,22 @@ private fun ScreenContent(
) { ) {
TextButton( TextButton(
modifier = Modifier.weight(1F), modifier = Modifier.weight(1F),
enabled = pagerState.currentPage != 0,
onClick = { onClick = {
coroutineScope.launch { when (pagerState.currentPage) {
pagerState.animateScrollToPage(pagerState.currentPage - 1) 0 -> onFinishOnboarding()
else -> {
coroutineScope.launch {
pagerState.animateScrollToPage(pagerState.currentPage - 1)
}
}
} }
} }
) { ) {
Text( Text(
text = stringResource(R.string.action_back), text = when (pagerState.currentPage) {
0 -> stringResource(R.string.action_skip)
else -> stringResource(R.string.action_back)
},
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
@@ -107,18 +118,20 @@ private fun ScreenContent(
modifier = Modifier.weight(1F), modifier = Modifier.weight(1F),
onClick = { onClick = {
when { when {
pagerState.currentPage < (pagerState.pageCount - 1) -> { isFinalPage() -> onFinishOnboarding()
else -> {
coroutineScope.launch { coroutineScope.launch {
pagerState.animateScrollToPage(pagerState.currentPage + 1) pagerState.animateScrollToPage(pagerState.currentPage + 1)
} }
} }
else -> onFinishOnboarding()
} }
} }
) { ) {
Text( Text(
text = stringResource(R.string.action_next), text = when {
isFinalPage() -> stringResource(R.string.action_finish)
else -> stringResource(R.string.action_next)
},
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )

View File

@@ -356,6 +356,7 @@
<string name="app_info_target_android">"Target API Level"</string> <string name="app_info_target_android">"Target API Level"</string>
<!-- OnBoarding Fragment --> <!-- OnBoarding Fragment -->
<string name="action_skip">Skip</string>
<string name="onboarding_title_installer">"Installer"</string> <string name="onboarding_title_installer">"Installer"</string>
<string name="onboarding_title_gsf">"App Compatibility"</string> <string name="onboarding_title_gsf">"App Compatibility"</string>
<string name="onboarding_title_gsf_desc">"Missing dependencies"</string> <string name="onboarding_title_gsf_desc">"Missing dependencies"</string>