[240507] TIL
[Today, What I Studied]
오늘은 공부한 내용을 바깥에Navigation Components ==
NavGraph
+NavHost
+NavController
-
NavGraph : navigation destination의 연결관계를 정의한 자료구조
-
Destination
⇒ a single or a group of composables (User가 보는 화면)
-
Routes
- unique identifie로, destination에 대응
- using enum class → 인수 설정시, property처럼 접근 가능
enum class( val num: Int ){ SUN ( 10 ), MOON( 20 ) }
-
-
NavHost
⇒ 보여질 화면(navigation destination)을 관리하는 container
//navController를 선언 navController: NavHostController = rememberNavController() ... // navHost는 1. navController, 2. startDestination, 3. contents를 인수로 받는다. NavHost( navController = navController, startDestination = //route의 enum / 초기 화면 설정 modifier = Modifier ){ composable( route = //route의enum(destination) ){ //컴포저블 함수들... } }
-
NavController
=> 다음 메서드를 제공하여, navigation을 담당
- destination 간의 이동을 위한 메서드 → navigate()
- deep links 조작 메서드
- back stack 관리 메서드
⇒ navController를 모든 컴포저블에 전달하지 않고, onClick()메서드로 특정 기능만을 전달
→ UI와의 분기(navigation은 navHost가 다 처리!)
navigate(route의 enum들) -> 그곳으로 이동 -> Screen Change + Back Stack에 push
[ Back Stack ]
⇒ 현재(가장 위의 destination)와 이전의 destination들을 저장
→ navigateUp()을 사용하여 최상위를 pop()
댓글남기기