Skip to content

Commit

Permalink
Remove TopBar from Scaffold, so that each screen has a TopBar
Browse files Browse the repository at this point in the history
  • Loading branch information
jhg3410 committed Jul 6, 2023
1 parent 1a45925 commit 6221e4e
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 35 deletions.
3 changes: 1 addition & 2 deletions app/src/main/java/com/jik/movie/navigation/MovieNavHost.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,13 @@ fun MovieNavHost(
navController: NavHostController,
modifier: Modifier = Modifier,
startDestination: String = HomeNavigation.route,
ExpandTopBar: @Composable () -> Unit,
) {
NavHost(
navController = navController,
startDestination = startDestination,
modifier = modifier
) {
installHomeScreen(ExpandTopBar)
installHomeScreen()
installPopularScreen(navController)
installDetailScreen()
}
Expand Down
27 changes: 6 additions & 21 deletions app/src/main/java/com/jik/movie/ui/MovieApp.kt
Original file line number Diff line number Diff line change
@@ -1,36 +1,26 @@
package com.jik.movie.ui

import androidx.compose.foundation.layout.*
import androidx.compose.material3.*
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.unit.dp
import com.jik.core.designsystem.component.*
import com.jik.core.designsystem.component.MovieNavigationBar
import com.jik.core.designsystem.component.MovieNavigationBarItem
import com.jik.core.designsystem.component.NavigationBarCornerSize
import com.jik.core.designsystem.theme.MovieTheme
import com.jik.movie.navigation.MovieNavHost
import com.jik.movie.navigation.TopLevelDestination

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MovieApp() {
MovieTheme(
dynamicColor = false
) {
val appState = rememberMovieAppState()
val scrollBehavior = appState.topAppBarScrollBehavior
val destination = appState.currentTopLevelDestination

Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
if (destination != null) {
MovieTopAppBar(
titleRes = destination.titleTextId,
scrollBehavior = scrollBehavior
)
}
},
bottomBar = {
if (destination != null) {
MovieBottomBar(
Expand All @@ -50,12 +40,7 @@ fun MovieApp() {
top = topPadding,
bottom = if (destination != null && bottomPadding > 0.dp) bottomPadding - NavigationBarCornerSize
else bottomPadding
),
ExpandTopBar = {
if (scrollBehavior.state.heightOffset < 0.0) {
scrollBehavior.state.heightOffset = 0f
}
}
)
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.jik.feature.home.navigation

import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
Expand All @@ -19,13 +18,10 @@ object HomeNavigation {
navigate(route, navOptions)
}

fun NavGraphBuilder.installHomeScreen(
ExpandTopBar: @Composable () -> Unit,
) {
fun NavGraphBuilder.installHomeScreen() {
composable(
route = HomeNavigation.route
) {
ExpandTopBar()
HomeScreen()
Spacer(modifier = Modifier.padding(bottom = NavigationBarCornerSize))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,15 @@ import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.GridItemSpan
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Surface
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
Expand All @@ -20,22 +25,38 @@ import com.jik.core.ui.pagination.Pageable
import kotlinx.coroutines.launch


@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun PopularScreen(
onPosterCardClick: (Long) -> Unit,
modifier: Modifier = Modifier,
popularViewModel: PopularViewModel = hiltViewModel()
) {

PopularScreenContent(
popularUiStates = popularViewModel.popularUiStates,
onLoadMore = popularViewModel::getPopularMovies,
onRetry = popularViewModel::getPopularMovies,
onPosterCardClick = onPosterCardClick,
modifier = modifier,
)
val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior()

Surface(modifier = modifier.nestedScroll(scrollBehavior.nestedScrollConnection)) {
Column {
PopularScreenTopBar(scrollBehavior = scrollBehavior)
PopularScreenContent(
popularUiStates = popularViewModel.popularUiStates,
onLoadMore = popularViewModel::getPopularMovies,
onRetry = popularViewModel::getPopularMovies,
onPosterCardClick = onPosterCardClick,
modifier = modifier,
)
}
}
}

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun PopularScreenTopBar(scrollBehavior: TopAppBarScrollBehavior) {
MovieTopAppBar(
titleRes = R.string.popular,
scrollBehavior = scrollBehavior
)
}

@Composable
fun PopularScreenContent(
Expand Down

0 comments on commit 6221e4e

Please sign in to comment.