nesting navigation issue - Picplz/picplz-aos GitHub Wiki
main navigation을 설정하고 하위 nav를 걸어서 작동 시켰을 경우 같은 navController를 상속해서 사용했더니 충돌 오류가 나서 앱이 중지
package com.hm.picplz.ui.screen.sign_up
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.hm.picplz.viewmodel.SignUpViewModel
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController
import com.hm.picplz.navigation.SignUpNavHost
import com.hm.picplz.ui.theme.PicplzTheme
@Composable
fun SignUpScreen(
modifier: Modifier = Modifier,
viewModel: SignUpViewModel = viewModel(),
mainNavController: NavHostController,
) {
val signUpNavController = rememberNavController()
SignUpNavHost(
navController = signUpNavController,
viewModel = viewModel
)
}
@Preview(showBackground = true)
@Composable
fun SignUpScreenPreview() {
val navController = rememberNavController()
PicplzTheme {
SignUpScreen(mainNavController = navController)
}
}
navController를 새롭게 생성하여 이용하여 해결
같은 navController를 사용하려 했던 이유 : 하위 nav 첫 페이지에서 navigatPop이 작동하지 않아서 공유하면 작동할것이라 잘못 생각 별도의 navController를 가져와서 각각 사용해줘야 한다
LaunchedEffect(Unit) {
viewModel.sideEffect.collectLatest { sideEffect ->
when (sideEffect) {
is SignUpSideEffect.NavigateToPrev -> {
mainNavController.popBackStack()
}
is SignUpSideEffect.Navigate -> {
signUpNavController.navigate(sideEffect.destination)
}
else -> {}
}
}
}