돌아오신 것을 환영합니다
다음으로는 화면 간 navigate(탐색)을 할 수 있도록 작업해 보겠습니다
물론 다른 화면을 바로 생성할 수도 있지만
먼저 navigation(탐색) 부분에 집중해 보겠습니다
일단 다른 화면들을 포함할 클래스를 새로 만들어야 합니다
여기에서 새 클래스를 생성하겠습니다
이 클래스의 이름은 Screen으로 하겠습니다
이 Screen이라는 클래스에는 route(경로)를 작성하겠습니다
이전에 다양한 route(경로)를 다루어 본 적이 있습니다
그 때 clean format(클린 코드)에 직접 추가를 했는데
이 클래스는 inherit(상속)이 불가능하도록 sealed로 밀봉하겠습니다
이제 지금은 object(객체)가 둘로, HomeScreen은
Screen에는 home_sc에 대한 route(경로)입니다
그리고 AddScreen은 화면 추가와 디테일을 위한 수정에
사용하겠습니다
여기 있는 내용을 단순화하겠습니다
바로 add_screen인데
물론 문자열 형태로 add_screen입니다
이것이 navigation(탐색)을 위해 사용할 두 개의 화면입니다
이 과정이 첫 번째 작업이었습니다
그 다음 작업은 navigation(탐색)에 대한 composable(컴포저블)을 설정하는 것입니다
이 작업을 해 보겠습니다
먼저 여기에 새 파일을 추가하겠습니다
이 경우에는 클래스가 아닌 파일입니다
이름은 Navigation으로 하고
Navigation은 NavHost와 NavController을 포함한 Composable(컴포저블)입니다
Fun Navigation은 viewModel을 요구합니다
여기에 WishViewModel을 사용하되 이 다음부터는 viewModel이 될 것입니다
즉 언제나처럼 viewModel을 설정해야 합니다
그리고 NavController의 한 유형인 navController 또한 pass(전달)해야 합니다
그리고 초기 상태에 RememberNavController를 pass(전달)하겠습니다
이제 WishViewModel을
먼저 설정해 주겠습니다
어차피 계속 필요하게 될 예정입니다
여기에 클래스를 하나 새로 추가하겠습니다
Kotlin Class/File을 선택합니다
Class를 선택하고 이름은
WishViewModel로
하겠습니다
지금으로서는 이 클래스는 ViewModel에서 inherit(상속)하는 것 외에는 별다른 작업을 수행하지 않습니다
이렇게 하고
이제 다시 Navigation으로 돌아가서 viewModel을 사용하겠습니다
수동으로 가져와 보겠습니다
Life Cycle에서 가져오겠습니다
네
androidx.lifecycle.viewmodel.compose.viewModel입니다
여기 Navigation에 사용할 버전은 이것입니다
그리고 여기로 pass(전달)하되
viewModel은 아직 작업할 내용이 많이 남았습니다
그렇죠?
아시다시피 viewModel은 데이터와 UI간의 소통을
책임집니다
아주 유용한 기능입니다
일단 Navigation은 NavHost를 필요로 합니다
이 NavHost는 navController를 필요로 하므로
navController를 navController로 pass(전달)하고
그리고 startDestination을 쓰는데
먼저 NavHost를 import로 가져오는 것이 더 쉬울 것 같습니다
여기 있는 Composable(컴포저블) NavHost입니다
그리고 startDestination은
Screen이고
온점
HomeScreen하고 온점
그리고 route
이 NavHost에는 content(내용)이 필요합니다
이제 NavController 설정은 끝났는데
다음 줄로 옮겨서 가독성을 높이겠습니다
이제 여기에서
이 NavController 부분에 이것 말고
NavHostController를 사용하겠습니다
이제 navController의 유형이 NavHostcontroller가 되었으니 이것을 NavHost에
navController로서 pass(전달)합니다
좋습니다
이 안에는 다양한 화면이 될 composable(컴포저블)을 추가할 수 있습니다
첫 번째와 두 번째 화면, 이런 식으로 말입니다
지금은 일단 첫 번째 화면밖에 없으므로
여기에 Screen.HomeScreen.route를 이 composable의 경로로 삼겠습니다
그리고 실제로 표시할 composable(컴포저블)은 HomeView가 됩니다
기억하시듯이 HomeView는 여기에서 설정했습니다
여기로 가 보겠습니다
지금으로서는 HomeView가 매개변수(parameter)를 요구하지 않습니다만
이 부분은 나중에 수정하겠습니다
일단은 애플리케이션이 이대로도 잘 작동하는지 먼저 점검해 보겠습니다
Navigation 파일 설정과 준비 작업을 했는데
물론 아직 완성되려면 한참 남았지만
일단 앱은 잘 작동하고 있습니다
아직 적절한 Naviation을 로딩 중입니다
사실 그런 명령을 내리지 않았으므로 실제로는 Navigation을 로딩하지
않을 것입니다
MainActivity에 HomeView를 로딩하는 대신 Navigation을 call(호출)하겠습니다
이제 애플리케이션을 재실행해서 Navigation이 작동하는지 봅시다
이 부분이 확인이 되면 다른 화면을 Navigation에 추가해 볼 수 있습니다
잘 작동하고 있습니다
이제 Navigation 준비가 끝났습니다
이 add_screen과 그 route(경로)에 해당하는 내용을 모두 준비했습니다만
아직 add_screen을 composable(컴포저블)로서 준비하지는 않았고, 이것은 긴 작업이므로
다음 영상에서 다루는 것이 좋겠습니다
또 지금은 비어 있는 ViewModel 작업도 계속하면서
내용을 더 추가하겠습니다
아직 갈 길이 꽤 멀지만 지금 빌드하는 것이 아주 강력한 애플리케이션이라는 점을 기억하시기 바랍니다
다음 영상에서 뵙겠습니다