Как отрисовать экран на весь размер, если переход на него находится внутри тела 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) }
) {
}
}