Как отрисовать экран на весь размер, если переход на него находится внутри тела Scaffold?(Jetpack Compose)

В приложении я отрисовываю MainScreen на HomeActivity, у MainScreen есть TopAppBar и NavigationBar. С TopAppBar можно перейти на другой экран, который отрисуется на полный размер, перекрыв все что есть на MainScreen. NavigationBar соответсвенно переключает экраны в теле Scaffold. Один из них - SearchScreen. На нём есть кнопка перехода на экран CreateScreen. Код который сделан сейчас, отрисовывает CreateScreen так же внутри тела Scaffold, мне же нужно чтобы он отрисовывался поверх MainScreen (т.е. без навигации сверху и снизу). Я понимаю что CreateScreen находится в функции которая отрисовывает именно в теле Scaffold, но и в функцию которая отрисовывает MainScreen его не переместить, так как придется создавать новый контроллер который будет конфликтовать. При этом мне нужно будет сделать так и на других экранах, по этому интересно какое решение будет наиболее оптимальным.

@Composable
fun BottomNavGraph(navController: NavHostController){
    NavHost(
        navController = navController,
        startDestination = Screens.HomeScreen.name,
    ){
        composable(route = Screens.HomeScreen.name){
            HomeScreen()
        }
        composable(route = Screens.SearchScreen.name){
            SearchScreen(navController)
        }
        composable(route = Screens.WishlistScreen.name){
            WishlistScreen()
        }

        composable(route = Screens.CreateScreen.name) {
            CreateScreen()
        }
    }
}

@Composable
fun MainNavGraph(navController: NavHostController){
    NavHost(
        navController = navController,
        startDestination = Screens.MainScreen.name,
    ){
        composable(route = Screens.MainScreen.name){
            MainScreen(navController)
        }
        composable(route = Screens.SettingsScreen.name){
            SettingsScreen(navController)
        }
    }
}

HomeActivity:

val navController = rememberNavController()
MainNavGraph(navController)

MainScreen:

@Composable
fun MainScreen(navController: NavHostController){
    val navControllerBottomBar = rememberNavController()
    Scaffold(
        topBar = {
            TopAppBarContent(navController)
        },
        bottomBar = {
            BottomBarContent(navControllerBottomBar)
        }
    ) {
        Surface(modifier = Modifier
            .fillMaxSize()
            .padding(it),
            shape = RoundedCornerShape(20.dp),
            color = MaterialTheme.colorScheme.inverseOnSurface,
        ) {
            BottomNavGraph(navControllerBottomBar)
        }
    }
}

SearchScreen:

@Composable
fun SearchScreen(navController: NavHostController) {
    var textState by remember {
        mutableStateOf("")
    }

    Button(
       onClick = { navController.navigate(Screens.CreateScreen.name) }
    ) {

    }
}

Ответы (0 шт):