首页 > 解决方案 > 使用 Dialog 作为导航目的地与 jetpack compose

问题描述

一个对话框可以有一个相当复杂的用户界面,更像是一个浮动屏幕,而不是一个典型的 AlertDialog。因此,可能需要让对话框拥有自己的ViewModel并能够导航到它。当使用 jetpack compose 导航工件时,代码表明在任何时候都只显示一个可组合的NavHost.

有没有办法导航到覆盖在当前 ui 上的对话框?这与我们如何导航到片段对话框是一致的。谢谢。

标签: android-jetpack-composeandroid-jetpack-navigation

解决方案


啊哈。这现在是撰写导航版本 2.4.0-alpha04 中的一项功能

发行说明

navigation-compose 工件的 NavHost 现在除了可组合的目的地外,还支持对话目的地。这些对话目标将分别显示在可组合对话框中,浮动在当前可组合目标上方。

val navController = rememberNavController()
Scaffold { innerPadding ->
    NavHost(navController, "home", Modifier.padding(innerPadding)) {
        composable("home") {
            // This content fills the area provided to the NavHost
            HomeScreen()
        }
        dialog("detail_dialog") {
            // This content will be automatically added to a Dialog() composable
            // and appear above the HomeScreen or other composable destinations
            DetailDialogContent()
        }
    }
}

推荐阅读