Skip to content

Commit

Permalink
[TNT-143] feat: Navigation 기초 세팅 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
hoyahozz committed Jan 16, 2025
1 parent 6c8e352 commit e96a30c
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package co.kr.tnt.navigation
import kotlinx.serialization.Serializable

sealed interface Route {
@Serializable
data object HomeBase : Route

@Serializable
data object Home : Route
}
14 changes: 11 additions & 3 deletions feature/home/src/main/java/co/kr/tnt/home/HomeScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,19 @@ import androidx.compose.ui.Modifier
import androidx.hilt.navigation.compose.hiltViewModel

@Composable
fun HomeScreen(
@Suppress("UnusedParameter")
@Suppress("UnusedParameter")
internal fun HomeRoute(
viewModel: HomeViewModel = hiltViewModel(),
) {
HomeScreen()
}

@Composable
fun HomeScreen() {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Text("home", modifier = Modifier.padding(innerPadding))
Text(
text = "home",
modifier = Modifier.padding(innerPadding),
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package co.kr.tnt.home.navigation

import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import androidx.navigation.compose.navigation
import co.kr.tnt.home.HomeRoute
import co.kr.tnt.navigation.Route

fun NavController.navigateToHome(navOptions: NavOptions) = navigate(
route = Route.Home,
navOptions = navOptions,
)

fun NavGraphBuilder.homeNavGraph(
homeDestination: NavGraphBuilder.() -> Unit,
) {
navigation<Route.HomeBase>(startDestination = Route.Home) {
composable<Route.Home> {
HomeRoute()
}
}
homeDestination()
}
2 changes: 2 additions & 0 deletions feature/main/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ android {
}

dependencies {
implementation(projects.feature.home)

implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.activity.compose)
Expand Down
21 changes: 2 additions & 19 deletions feature/main/src/main/java/co/kr/tnt/main/ui/TnTApp.kt
Original file line number Diff line number Diff line change
@@ -1,29 +1,12 @@
package co.kr.tnt.main.ui

import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier

@Composable
@Suppress("UnusedParameter")
fun TnTApp(
appState: TnTAppState,
) {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Greeting(
name = "Trainer & Trainee",
modifier = Modifier.padding(innerPadding),
)
}
}

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier,
TnTNavHost(
appState = appState,
)
}
22 changes: 19 additions & 3 deletions feature/main/src/main/java/co/kr/tnt/main/ui/TnTAppState.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,27 @@ package co.kr.tnt.main.ui
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Stable
import androidx.compose.runtime.remember
import androidx.navigation.NavDestination
import androidx.navigation.NavHostController
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import co.kr.tnt.navigation.Route

@Composable
fun rememberTnTAppState(): TnTAppState {
return remember { TnTAppState() }
fun rememberTnTAppState(
navController: NavHostController = rememberNavController(),
): TnTAppState {
return remember { TnTAppState(navController) }
}

@Stable
class TnTAppState
@Suppress("UnusedPrivateProperty")
class TnTAppState(
val navController: NavHostController,
) {
private val currentDestination: NavDestination?
@Composable get() = navController
.currentBackStackEntryAsState().value?.destination

val startDestination = Route.HomeBase
}
28 changes: 28 additions & 0 deletions feature/main/src/main/java/co/kr/tnt/main/ui/TnTNavHost.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package co.kr.tnt.main.ui

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.compose.NavHost
import co.kr.tnt.home.navigation.homeNavGraph

@Composable
fun TnTNavHost(
appState: TnTAppState,
modifier: Modifier = Modifier,
) {
val navController = appState.navController

Box(
modifier = modifier.fillMaxSize(),
) {
NavHost(
navController = navController,
startDestination = appState.startDestination,
) {
homeNavGraph {
}
}
}
}

0 comments on commit e96a30c

Please sign in to comment.