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 -> {}
            }
        }
    }