Files
life-echo/skills/bottom-navigation.md

21 lines
1017 B
Markdown
Raw Normal View History

# Skill底部导航栏Tab 栏)
与具体业务无关的底部 Tab 栏设计:显示条件、实现方式与选中态。
---
## 显示条件
- 仅在部分主 Tab 页显示:如会话列表、回忆录、我的(以 `Screen.ConversationList``Screen.MyMemoir``Screen.Profile` 等当前路由判断)。
- 子页如设置、关于、FAQ不显示底部栏。
## 实现
-`Scaffold.bottomBar` 中按 `currentRoute` 条件渲染底部栏;使用 `Surface` + `windowInsetsPadding(WindowInsets.navigationBars)` 避免与系统导航栏重叠。
- 底部项使用 **AppDestinations** 枚举(如 CHAT、MEMOIR、PROFILE每项含 label、icon点击时 `navController.navigate(对应 Screen.route)` 并配合 `popUpTo` 控制返回栈。
## 选中态
- 通过 `currentDestination` 与当前路由同步(`LaunchedEffect(currentRoute)`),保证高亮与实际页面一致。
- 可选:选中缩放/按下缩放等动画(如 `BottomNavItem` 中的 `animateFloatAsState`)。