跳转到内容

导航支持

miuix-navigation3-ui 提供了 androidx.navigation3 的 UI 实现,适配了 Miuix 的设计风格和过渡动画。

配置

build.gradle.kts 中添加依赖:

kotlin
implementation("androidx.navigation3:navigation3-runtime:<navigation3-version>")
implementation("top.yukonga.miuix.kmp:miuix-navigation3-ui:<version>")
// 可选:添加 miuix-navigation3-adaptive 以支持自适应布局
implementation("top.yukonga.miuix.kmp:miuix-navigation3-adaptive:<version>")

WARNING

本库仅包含 UI 实现。您必须自行引入 androidx-navigation3-runtime 依赖。

使用

使用 NavDisplay 来渲染你的导航场景。定义实现 NavKey 接口的屏幕类。

kotlin
import androidx.navigation3.runtime.NavKey
import androidx.navigation3.runtime.entryProvider
import androidx.navigation3.runtime.rememberDecoratedNavEntries
import androidx.navigation3.ui.NavDisplay

sealed interface Screen : NavKey {
    data object Home : Screen
    data class Detail(val id: String) : Screen
}

@Composable
fun App() {
    val backStack = remember { mutableStateListOf<NavKey>(Screen.Home) }

    val entryProvider = remember(backStack) {
        entryProvider<NavKey> {
            entry(Screen.Home) {
                HomePage()
            }
            entry<Screen.Detail> { screen ->
                DetailPage(screen.id)
            }
        }
    }

    val entries = rememberDecoratedNavEntries(
        backStack = backStack,
        entryProvider = entryProvider
    )

    NavDisplay(
        entries = entries,
        onBack = { backStack.removeLast() }
    )
}

自适应布局支持

miuix-navigation3-adaptive 为 Navigation3 提供了自适应布局策略,例如 ListDetailSceneStrategy

列表详情布局

使用 ListDetailSceneStrategy 创建列表详情布局。

kotlin
import androidx.navigation3.adaptive.rememberListDetailSceneStrategy

val strategy = rememberListDetailSceneStrategy<NavKey> {
    // 可选:如果需要,显式配置面板
    // listPane { ... }
}

NavDisplay(
    entries = entries,
    sceneStrategy = strategy,
    onBack = { backStack.removeLast() }
)

变更日志

基于 Apache-2.0 许可发布