1.2 KiB
1.2 KiB
Skill:Android 路由与页面导航
与具体业务无关的 Android 路由与 NavHost 设计:路由定义、转场与返回栈。
路由定义
- 使用 Screen sealed class,所有路由字符串集中定义(如
Screen.ConversationList.route、Screen.CreateMemory.createRoute(conversationId)等)。
NavHost
- 在 AppNavigation 中统一注册
composable(route = ..., enterTransition = ..., exitTransition = ..., popEnterTransition = ..., popExitTransition = ...)。 - 转场动画由 NavigationTransitions 提供:水平进出(如
slideInHorizontally、slideOutHorizontally)、从左侧返回(slideInHorizontallyFromLeft、slideOutHorizontallyToRight)、淡入淡出、缩放等,按页面类型选用。
起始目的地
startDestination = if (isLoggedIn) Screen.ConversationList.route else Screen.Login.route,与 TokenManager 的登录状态一致。
返回栈
- 登录后进入主界面:
popUpTo(Screen.Login.route) { inclusive = true }。 - 登出:
popUpTo(0) { inclusive = true }清空栈再 navigate 到 Login。 - Tab 切换时按设计选择
popUpTo(ConversationList)等,避免栈过深。