diff --git a/IosClientKit/Sources/App/AppContainer.swift b/IosClientKit/Sources/App/AppContainer.swift new file mode 100644 index 0000000..356801d --- /dev/null +++ b/IosClientKit/Sources/App/AppContainer.swift @@ -0,0 +1,14 @@ +import CoreDomain +import CoreRepository +import FeatureHome + +/// 手写组合根 / DI 容器(对应 Android Hilt 的 AppContainer)。 +@MainActor +public enum AppContainer { + /// 装配 FeatureHome 依赖并返回 ViewModel。 + public static func makeHomeViewModel() -> HomeViewModel { + let repository: HomeRepository = FakeHomeRepository() + let useCase = HomeUseCase(repository: repository) + return HomeViewModel(homeUseCase: useCase) + } +} diff --git a/IosClientKit/Sources/App/AppRootView.swift b/IosClientKit/Sources/App/AppRootView.swift new file mode 100644 index 0000000..33e4b69 --- /dev/null +++ b/IosClientKit/Sources/App/AppRootView.swift @@ -0,0 +1,36 @@ +import SwiftUI +import CoreUI +import FeatureAuth +import FeatureHome + +public struct AppRootView: View { + @State private var homeViewModel: HomeViewModel + + public init() { + _homeViewModel = State(initialValue: AppContainer.makeHomeViewModel()) + } + + public var body: some View { + TabView { + NavigationStack { + HomeScreen(viewModel: homeViewModel) + } + .tabItem { Label("首页", systemImage: "house.fill") } + + NavigationStack { + PlaceholderView("计划", systemImage: "calendar") + } + .tabItem { Label("计划", systemImage: "calendar") } + + NavigationStack { + PlaceholderView("打卡", systemImage: "checkmark.seal.fill") + } + .tabItem { Label("打卡", systemImage: "checkmark.seal.fill") } + + NavigationStack { + AuthScreen() + } + .tabItem { Label("我的", systemImage: "person.crop.circle") } + } + } +}