Как я могу добиться многооконности в Compose Desktop

Я пытаюсь создать многооконное настольное приложение с композицией.

У них будут совершенно разные экраны. Один будет основным экраном, а другой будет вспомогательным экраном. Я пробовал так.

Дополнительный экран предназначался для отображения некоторым потоком состояний внутри общего презентатора, который будет вызываться как true на главном экране, но чтобы сделать код кратким, я вырезал эту часть.

      fun main() = application {


val windowState = rememberWindowState()
val subWindowState = rememberWindowState()

var isVisible by remember { mutableStateOf(true) }


var isSubScreenVisible by remember { mutableStateOf(false) }


val onVisibilityChanged : (Boolean) -> Unit = {
    isVisible = it
}

setTray(this) {
    isVisible = it
}

//Sub screen
Window(onCloseRequest = {
        isSubScreenVisible = false
    },
    title = "SubScreen",
    state = subWindowState,
    undecorated = true,
    resizable = false,
    visible = isSubScreenVisible,
    transparent = true) {
 
} {
  AppTheme(darkTheme = false) {
    //my sub screen composable..
  }
}

//Main Screen
Window(
    onCloseRequest = {
        onVisibilityChanged(false)
    },
    icon = painterResource("logo.png"),
    title = "Main Screen",
    state = windowState,
    undecorated = true,
    resizable = false,
    visible = isVisible,
    transparent = true
){
    AppTheme(darkTheme = false) {

        val rootState by mPresenter.mRootState.collectAsState()
        when(rootState){
            is RootState.Splash -> {
                showMessage("[RootNav] Splash")
                Splash(this, mPresenter)
            }
            is RootState.NotLoggedIn -> {
                showMessage("[RootNav] Login")
                Login(mPresenter, this, windowState, onVisibilityChanged)
            }
            is RootState.LoggedIn -> {
                showMessage("[RootNav] Main")
                MainFrame(this, windowState, onVisibilityChanged)
            }
        }
    }
}

}

Этот код приводит к этому исключению.

      Exception in thread "main" java.awt.IllegalComponentStateException: The frame is displayable.

Эта ошибка возникает в окне главного экрана, и ничего не отображается.

Что это вообще означает? Разрешено ли несколько окон, поскольку есть что-то вроде SingleWindowApplication?

Что я могу сделать ?

0 ответов

Другие вопросы по тегам