Change toolbar composable.

This commit is contained in:
Thomas Andres Gomez 2021-05-07 09:58:52 +02:00
parent 86b45cbdb4
commit 8c1077ca11

View file

@ -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
}
}