compose: onboarding: Add a skip and finish button at end pages
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user