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

View File

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