Change toolbar composable.
This commit is contained in:
parent
86b45cbdb4
commit
8c1077ca11
1 changed files with 43 additions and 16 deletions
|
|
@ -5,6 +5,7 @@ import androidx.compose.animation.core.tween
|
|||
import androidx.compose.material.*
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.sharp.ArrowBack
|
||||
import androidx.compose.material.icons.sharp.LocalLibrary
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.livedata.observeAsState
|
||||
|
|
@ -15,6 +16,25 @@ import com.pixelized.biblib.ui.composable.pages.DetailPageComposable
|
|||
import com.pixelized.biblib.ui.composable.pages.HomePageComposable
|
||||
import com.pixelized.biblib.ui.theme.BibLibTheme
|
||||
import com.pixelized.biblib.ui.viewmodel.NavigationViewModel
|
||||
import com.pixelized.biblib.ui.viewmodel.NavigationViewModel.Page
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun ToolbarComposableDarkPreview() {
|
||||
val viewModel = NavigationViewModel()
|
||||
BibLibTheme(darkTheme = false) {
|
||||
ToolbarComposable(navigationViewModel = viewModel)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun ToolbarComposableLightPreview() {
|
||||
val viewModel = NavigationViewModel()
|
||||
BibLibTheme(darkTheme = true) {
|
||||
ToolbarComposable(navigationViewModel = viewModel)
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
|
|
@ -30,38 +50,45 @@ fun MainScreenComposable(navigationViewModel: NavigationViewModel) {
|
|||
val page by navigationViewModel.page.observeAsState()
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
TopAppBar(
|
||||
title = { Text(stringResource(id = R.string.app_name)) },
|
||||
navigationIcon = navigationIcon(navigationViewModel)
|
||||
)
|
||||
},
|
||||
topBar = { ToolbarComposable(navigationViewModel) },
|
||||
) {
|
||||
Crossfade(targetState = page, animationSpec = tween(1000)) {
|
||||
when (it) {
|
||||
is NavigationViewModel.Page.HomePage -> HomePageComposable(navigationViewModel)
|
||||
is NavigationViewModel.Page.Detail -> DetailPageComposable(it.book)
|
||||
is Page.HomePage -> HomePageComposable(navigationViewModel)
|
||||
is Page.Detail -> DetailPageComposable(it.book)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun navigationIcon(navigationViewModel: NavigationViewModel): (@Composable () -> Unit)? {
|
||||
val page by navigationViewModel.page.observeAsState()
|
||||
fun ToolbarComposable(navigationViewModel: NavigationViewModel) {
|
||||
TopAppBar(
|
||||
title = { Text(stringResource(id = R.string.app_name)) },
|
||||
navigationIcon = { NavigationIcon(navigationViewModel) }
|
||||
)
|
||||
}
|
||||
|
||||
return if (page !is NavigationViewModel.Page.HomePage) {
|
||||
{
|
||||
IconButton(onClick = {
|
||||
@Composable
|
||||
fun NavigationIcon(navigationViewModel: NavigationViewModel) {
|
||||
val page: Page? by navigationViewModel.page.observeAsState()
|
||||
|
||||
Crossfade(targetState = page) {
|
||||
when (it) {
|
||||
is Page.HomePage -> IconButton(onClick = {}) {
|
||||
Icon(
|
||||
imageVector = Icons.Sharp.LocalLibrary,
|
||||
contentDescription = ""
|
||||
)
|
||||
}
|
||||
else -> IconButton(onClick = {
|
||||
navigationViewModel.navigateBack()
|
||||
}) {
|
||||
Icon(
|
||||
imageVector = Icons.Sharp.ArrowBack,
|
||||
contentDescription = ""
|
||||
contentDescription = "back"
|
||||
)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue