Files
suixinkan_ios_new/suixinkan/Features/Main/Main.md
2026-06-22 15:35:12 +08:00

1.7 KiB
Raw Blame History

Main 模块业务逻辑

模块职责

Main 模块负责登录后的主界面 Tab 容器,以及当前尚未迁移页面的占位入口。

主界面由 MainTabsView 承载:

  • 使用 TabView 展示首页、订单、数据、我的四个 Tab。
  • 每个 Tab 内部都包裹独立的 NavigationStack
  • 每个 Tab 的导航路径由 AppRouter 单独保存。

Tab 结构

当前 Tab 来自 AppTab

  • home:首页
  • orders:订单
  • statistics:数据
  • profile:我的

HomeRootView 已接入真实的 HomeViewOrdersRootView 已接入真实的 OrdersViewStatisticsRootView 已接入真实的 StatisticsViewProfileRootView 已接入真实的 ProfileView

导航流程

  1. MainTabsView 从 Environment 读取 AppRouter
  2. TabView 使用 appRouter.selectedTab 作为选中状态。
  3. 每个 Tab 创建自己的 NavigationStack(path:)
  4. 路径绑定来自 appRouter.binding(for:)
  5. Tab 内页面需要进入尚未迁移的子页面时,通过当前 Tab 注入的 RouterPath push 一个 AppRoute.placeholder
  6. navigationDestination 根据 AppRoute 展示详情页。
  7. 子页面展示时读取 AppRoute.hidesTabBarWhenPushed,默认隐藏底部 TabBar。

后续迁移规则

迁移新页面时:

  • 优先替换对应 Tab 的 RootView。
  • 保持每个 Tab 自己的 NavigationStack
  • 跨 Tab 跳转通过 AppRouter.select 切换 Tab。
  • Tab 内跳转通过当前 Tab 的 RouterPath.navigate 或扩展后的 AppRoute 处理。
  • 普通业务子页面默认隐藏 TabBar只有确有产品需求时才在 AppRoute 策略中单独放开。
  • 真实业务页面接入后,应同步补充该模块文档和单元测试。