25 lines
1.2 KiB
Markdown
25 lines
1.2 KiB
Markdown
# 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)` 等,避免栈过深。
|