Show back button in appbar when current destination is not in nav items (#301)

* Add navigation icon support in `ClawAppBar`

* Show back icon in app bar when current destination is not in nav items

* Add title support in `ClawAppBar`

* Show title in app bar only if the current destination is present in nav items
This commit is contained in:
Sasikanth Miriyampalli 2022-02-20 16:43:42 +05:30 committed by GitHub
parent 01a2bbc55d
commit 0ce95ef770
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 10 deletions

View file

@ -2,9 +2,14 @@ package dev.msfjarvis.claw.android.ui
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
@ -19,6 +24,8 @@ import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
@ -107,6 +114,21 @@ fun LobstersApp(
modifier = Modifier.statusBarsPadding(),
backgroundColor = systemBarsColor,
scrollBehavior = scrollBehavior,
navigationIcon = {
if (navItems.none { it.route == currentDestination }) {
IconButton(onClick = { navController.popBackStack() }) {
Icon(
imageVector = Icons.Filled.ArrowBack,
contentDescription = "Go back to previous screen"
)
}
}
},
title = {
if (navItems.any { it.route == currentDestination }) {
Text(text = stringResource(R.string.app_name), fontWeight = FontWeight.Bold)
}
}
)
},
bottomBar = {

View file

@ -1,31 +1,25 @@
package dev.msfjarvis.claw.android.ui.decorations
import androidx.compose.material3.SmallTopAppBar
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import dev.msfjarvis.claw.android.R
@Composable
fun ClawAppBar(
backgroundColor: Color,
scrollBehavior: TopAppBarScrollBehavior? = null,
navigationIcon: @Composable () -> Unit = {},
title: @Composable () -> Unit = {},
modifier: Modifier = Modifier,
) {
SmallTopAppBar(
title = {
Text(
text = stringResource(R.string.app_name),
fontWeight = FontWeight.Bold,
)
},
title = title,
modifier = modifier,
colors = TopAppBarDefaults.smallTopAppBarColors(containerColor = backgroundColor),
scrollBehavior = scrollBehavior,
navigationIcon = navigationIcon
)
}