Skip to content

Commit beb6af3

Browse files
authored
Merge #7 -> develop
[Feat/#7] 커스텀 바텀 바
2 parents b875958 + 0457da1 commit beb6af3

File tree

13 files changed

+508
-110
lines changed

13 files changed

+508
-110
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.paw.key.presentation.ui.community
2+
3+
import androidx.compose.foundation.layout.PaddingValues
4+
import androidx.compose.material3.SnackbarHostState
5+
import androidx.compose.material3.Text
6+
import androidx.compose.runtime.Composable
7+
import androidx.compose.ui.Modifier
8+
import androidx.compose.ui.res.stringResource
9+
import androidx.compose.ui.tooling.preview.Preview
10+
import com.paw.key.R
11+
12+
@Composable
13+
fun CommunityRoute(
14+
paddingValues: PaddingValues,
15+
navigateUp: () -> Unit,
16+
navigateNext: () -> Unit,
17+
snackBarHostState: SnackbarHostState,
18+
modifier: Modifier = Modifier,
19+
) {
20+
CommunityScreen(
21+
paddingValues = paddingValues,
22+
navigateUp = navigateUp,
23+
navigateNext = navigateNext,
24+
snackBarHostState = snackBarHostState,
25+
modifier = modifier,
26+
)
27+
}
28+
29+
@Composable
30+
fun CommunityScreen(
31+
paddingValues: PaddingValues,
32+
navigateUp: () -> Unit,
33+
navigateNext: () -> Unit,
34+
snackBarHostState: SnackbarHostState,
35+
modifier: Modifier = Modifier,
36+
) {
37+
Text(
38+
text = stringResource(R.string.ic_community_description),
39+
modifier = modifier,
40+
)
41+
}
42+
43+
@Preview
44+
@Composable
45+
private fun CommunityScreenPreview() {
46+
CommunityScreen(
47+
paddingValues = PaddingValues(),
48+
navigateUp = {},
49+
navigateNext = {},
50+
snackBarHostState = SnackbarHostState(),
51+
)
52+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.paw.key.presentation.ui.community.navigation
2+
3+
import androidx.compose.foundation.layout.PaddingValues
4+
import androidx.compose.material3.SnackbarHostState
5+
import androidx.navigation.NavController
6+
import androidx.navigation.NavGraphBuilder
7+
import androidx.navigation.NavOptions
8+
import androidx.navigation.compose.composable
9+
import com.paw.key.core.navigation.MainTabRoute
10+
import com.paw.key.presentation.ui.community.CommunityRoute
11+
import kotlinx.serialization.Serializable
12+
13+
fun NavController.navigateCommunity(
14+
navOptions: NavOptions?
15+
) {
16+
navigate(Community, navOptions)
17+
}
18+
19+
fun NavGraphBuilder.communityNavGraph(
20+
paddingValues: PaddingValues,
21+
navigateUp: () -> Unit,
22+
navigateNext: () -> Unit,
23+
snackBarHostState: SnackbarHostState,
24+
) {
25+
composable<Community> {
26+
CommunityRoute(
27+
paddingValues = paddingValues,
28+
navigateUp = navigateUp,
29+
navigateNext = navigateNext,
30+
snackBarHostState = snackBarHostState,
31+
)
32+
}
33+
}
34+
35+
@Serializable
36+
data object Community : MainTabRoute
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.paw.key.presentation.ui.course
2+
3+
import androidx.compose.foundation.layout.PaddingValues
4+
import androidx.compose.material3.SnackbarHostState
5+
import androidx.compose.material3.Text
6+
import androidx.compose.runtime.Composable
7+
import androidx.compose.ui.Modifier
8+
import androidx.compose.ui.res.stringResource
9+
import androidx.compose.ui.tooling.preview.Preview
10+
import com.paw.key.R
11+
12+
@Composable
13+
fun CourseRoute(
14+
paddingValues: PaddingValues,
15+
navigateUp: () -> Unit,
16+
navigateNext: () -> Unit,
17+
snackBarHostState: SnackbarHostState,
18+
modifier: Modifier = Modifier,
19+
) {
20+
CourseScreen(
21+
paddingValues = paddingValues,
22+
navigateUp = navigateUp,
23+
navigateNext = navigateNext,
24+
snackBarHostState = snackBarHostState,
25+
modifier = modifier,
26+
)
27+
}
28+
29+
@Composable
30+
fun CourseScreen(
31+
paddingValues: PaddingValues,
32+
navigateUp: () -> Unit,
33+
navigateNext: () -> Unit,
34+
snackBarHostState: SnackbarHostState,
35+
modifier: Modifier = Modifier,
36+
) {
37+
Text(
38+
text = stringResource(R.string.ic_course_description),
39+
modifier = modifier,
40+
)
41+
}
42+
43+
@Preview
44+
@Composable
45+
private fun CourseScreenPreview() {
46+
CourseScreen(
47+
paddingValues = PaddingValues(),
48+
navigateUp = {},
49+
navigateNext = {},
50+
snackBarHostState = SnackbarHostState(),
51+
)
52+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.paw.key.presentation.ui.course.navigation
2+
3+
import androidx.compose.foundation.layout.PaddingValues
4+
import androidx.compose.material3.SnackbarHostState
5+
import androidx.navigation.NavController
6+
import androidx.navigation.NavGraphBuilder
7+
import androidx.navigation.NavOptions
8+
import androidx.navigation.compose.composable
9+
import com.paw.key.core.navigation.MainTabRoute
10+
import com.paw.key.presentation.ui.course.CourseRoute
11+
import kotlinx.serialization.Serializable
12+
13+
fun NavController.navigateCourse(
14+
navOptions: NavOptions?
15+
) {
16+
navigate(Course, navOptions)
17+
}
18+
19+
fun NavGraphBuilder.courseNavGraph(
20+
paddingValues: PaddingValues,
21+
navigateUp: () -> Unit,
22+
navigateNext: () -> Unit,
23+
snackBarHostState: SnackbarHostState,
24+
) {
25+
composable<Course> {
26+
CourseRoute(
27+
paddingValues = paddingValues,
28+
navigateUp = navigateUp,
29+
navigateNext = navigateNext,
30+
snackBarHostState = snackBarHostState,
31+
)
32+
}
33+
}
34+
35+
@Serializable
36+
data object Course : MainTabRoute
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.paw.key.presentation.ui.home
2+
3+
import androidx.compose.foundation.layout.PaddingValues
4+
import androidx.compose.material3.SnackbarHostState
5+
import androidx.compose.material3.Text
6+
import androidx.compose.runtime.Composable
7+
import androidx.compose.ui.Modifier
8+
import androidx.compose.ui.res.stringResource
9+
import androidx.compose.ui.tooling.preview.Preview
10+
import com.paw.key.R
11+
12+
@Composable
13+
fun HomeRoute (
14+
paddingValues: PaddingValues,
15+
navigateUp: () -> Unit,
16+
navigateNext: () -> Unit,
17+
snackBarHostState: SnackbarHostState,
18+
modifier: Modifier = Modifier
19+
) {
20+
21+
HomeScreen(
22+
paddingValues = paddingValues,
23+
navigateUp = navigateUp,
24+
navigateNext = navigateNext,
25+
snackBarHostState = snackBarHostState,
26+
modifier = modifier
27+
)
28+
}
29+
30+
@Composable
31+
fun HomeScreen (
32+
paddingValues: PaddingValues,
33+
navigateUp: () -> Unit,
34+
navigateNext: () -> Unit,
35+
snackBarHostState: SnackbarHostState,
36+
modifier: Modifier = Modifier
37+
) {
38+
// Todo : 변경 예정
39+
Text(
40+
text = stringResource(R.string.ic_home_description),
41+
modifier = modifier
42+
)
43+
}
44+
45+
@Preview
46+
@Composable
47+
private fun HomeScreenPreview() {
48+
HomeScreen(
49+
paddingValues = PaddingValues(),
50+
navigateUp = {},
51+
navigateNext = {},
52+
snackBarHostState = SnackbarHostState(),
53+
)
54+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.paw.key.presentation.ui.home.navigation
2+
3+
import androidx.compose.foundation.layout.PaddingValues
4+
import androidx.compose.material3.SnackbarHostState
5+
import androidx.compose.ui.Modifier
6+
import androidx.navigation.NavController
7+
import androidx.navigation.NavGraphBuilder
8+
import androidx.navigation.NavOptions
9+
import androidx.navigation.compose.composable
10+
import com.paw.key.core.navigation.MainTabRoute
11+
import com.paw.key.presentation.ui.home.HomeRoute
12+
import kotlinx.serialization.Serializable
13+
14+
fun NavController.navigateHome(
15+
navOptions: NavOptions?
16+
) {
17+
navigate(Home, navOptions)
18+
}
19+
20+
fun NavGraphBuilder.homeNavGraph(
21+
paddingValues: PaddingValues,
22+
navigateUp: () -> Unit,
23+
navigateNext: () -> Unit,
24+
snackBarHostState: SnackbarHostState,
25+
modifier: Modifier = Modifier
26+
) {
27+
composable<Home> {
28+
HomeRoute(
29+
paddingValues = paddingValues,
30+
navigateUp = navigateUp,
31+
navigateNext = navigateNext,
32+
snackBarHostState = snackBarHostState,
33+
modifier = modifier
34+
)
35+
}
36+
}
37+
38+
@Serializable
39+
data object Home : MainTabRoute

app/src/main/java/com/paw/key/presentation/ui/main/MainNavigator.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,13 @@ import androidx.navigation.NavOptions
99
import androidx.navigation.compose.currentBackStackEntryAsState
1010
import androidx.navigation.compose.rememberNavController
1111
import androidx.navigation.navOptions
12-
import com.paw.key.presentation.ui.dummy.navigation.Dummy
12+
import com.paw.key.presentation.ui.community.navigation.navigateCommunity
13+
import com.paw.key.presentation.ui.course.navigation.navigateCourse
1314
import com.paw.key.presentation.ui.dummy.navigation.navigateDummy
1415
import com.paw.key.presentation.ui.dummy.next.navigateDummyNext
16+
import com.paw.key.presentation.ui.home.navigation.Home
17+
import com.paw.key.presentation.ui.home.navigation.navigateHome
18+
import com.paw.key.presentation.ui.mypage.navigation.navigateMyPage
1519

1620
class MainNavigator (
1721
val navController: NavHostController
@@ -20,7 +24,7 @@ class MainNavigator (
2024
@Composable get() = navController
2125
.currentBackStackEntryAsState().value?.destination
2226

23-
val startDestination = Dummy
27+
val startDestination = Home
2428

2529
val currentTab : MainTab?
2630
@Composable get() = MainTab.find { tab ->
@@ -40,9 +44,10 @@ class MainNavigator (
4044
}
4145

4246
when (tab) {
43-
/* MainTab.HOME -> navController.navigateToHome(navOptions)
44-
MainTab.ACCOUNT -> navController.navigateToAccount(navOptions)*/
45-
else -> {}
47+
MainTab.HOME -> navController.navigateHome(navOptions)
48+
MainTab.COURSE -> navController.navigateCourse(navOptions)
49+
MainTab.COMMUNITY -> navController.navigateCommunity(navOptions)
50+
MainTab.MYPAGE -> navController.navigateMyPage(navOptions)
4651
}
4752
}
4853

Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
package com.paw.key.presentation.ui.main
22

3-
import androidx.compose.foundation.background
43
import androidx.compose.foundation.layout.Box
4+
import androidx.compose.foundation.layout.PaddingValues
55
import androidx.compose.foundation.layout.WindowInsets
66
import androidx.compose.foundation.layout.WindowInsetsSides
77
import androidx.compose.foundation.layout.fillMaxSize
88
import androidx.compose.foundation.layout.only
9-
import androidx.compose.foundation.layout.padding
109
import androidx.compose.foundation.layout.systemBars
1110
import androidx.compose.foundation.layout.systemBarsPadding
1211
import androidx.compose.foundation.layout.windowInsetsPadding
13-
import androidx.compose.material3.Scaffold
14-
import androidx.compose.material3.SnackbarHost
1512
import androidx.compose.material3.SnackbarHostState
1613
import androidx.compose.runtime.Composable
1714
import androidx.compose.runtime.remember
15+
import androidx.compose.ui.Alignment
1816
import androidx.compose.ui.Modifier
19-
import androidx.compose.ui.graphics.Color
2017
import com.paw.key.presentation.ui.main.component.MainBottomBar
2118
import kotlinx.collections.immutable.toImmutableList
2219

@@ -38,34 +35,26 @@ private fun MainScreenContent(
3835
snackBarHostState: SnackbarHostState,
3936
modifier: Modifier = Modifier
4037
) {
41-
Scaffold(
42-
modifier = Modifier
43-
.background(color = Color.White)
38+
Box(
39+
modifier = modifier
4440
.windowInsetsPadding(WindowInsets.systemBars.only(WindowInsetsSides.Top))
4541
.systemBarsPadding()
46-
.fillMaxSize(),
47-
content = { padding ->
48-
Box(modifier = Modifier.fillMaxSize()) {
49-
PawKeyNavHost(
50-
navigator = navigator,
51-
paddingValues = padding,
52-
snackbarHostState = snackBarHostState,
53-
modifier = Modifier.padding(padding)
54-
)
55-
}
56-
},
57-
bottomBar = {
58-
MainBottomBar(
59-
isVisible = navigator.showBottomBar(),
60-
tabs = MainTab.entries.toImmutableList(),
61-
currentTab = navigator.currentTab,
62-
onTabSelected = navigator::navigate
63-
)
64-
},
65-
snackbarHost = {
66-
SnackbarHost(
67-
hostState = snackBarHostState
68-
)
69-
}
70-
)
42+
.fillMaxSize()
43+
) {
44+
PawKeyNavHost(
45+
navigator = navigator,
46+
paddingValues = PaddingValues(),
47+
snackbarHostState = snackBarHostState,
48+
modifier = modifier
49+
)
50+
51+
MainBottomBar(
52+
isVisible = navigator.showBottomBar(),
53+
tabs = MainTab.entries.toImmutableList(),
54+
currentTab = navigator.currentTab,
55+
onTabSelected = navigator::navigate,
56+
modifier = modifier
57+
.align(Alignment.BottomCenter)
58+
)
59+
}
7160
}

0 commit comments

Comments
 (0)