
- 在swift-assistant-style.mdc中添加项目背景、代码结构、命名规范、Swift最佳实践、UI开发、性能、安全性、测试与质量、核心功能、开发流程、App Store指南等详细规则。 - 在yanaApp.swift中将SplashView替换为Splash,简化应用结构。
64 lines
2.1 KiB
Swift
64 lines
2.1 KiB
Swift
import SwiftUI
|
||
import ComposableArchitecture
|
||
|
||
struct AppRootView: View {
|
||
@State private var isLoggedIn = false
|
||
@State private var mainStore: StoreOf<MainFeature>?
|
||
|
||
var body: some View {
|
||
Group {
|
||
if isLoggedIn {
|
||
if let mainStore = mainStore {
|
||
MainView(store: mainStore)
|
||
.onAppear {
|
||
debugInfoSync("🔄 AppRootView: 使用已存在的MainStore")
|
||
}
|
||
} else {
|
||
// 修复:确保store被正确创建和保存
|
||
let store = createMainStore()
|
||
MainView(store: store)
|
||
.onAppear {
|
||
debugInfoSync("💾 AppRootView: MainStore已创建并保存")
|
||
// 确保在onAppear中保存store
|
||
DispatchQueue.main.async {
|
||
self.mainStore = store
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
LoginView(
|
||
store: Store(
|
||
initialState: LoginFeature.State()
|
||
) {
|
||
LoginFeature()
|
||
},
|
||
onLoginSuccess: {
|
||
debugInfoSync("🔐 AppRootView: 登录成功,准备创建MainStore")
|
||
isLoggedIn = true
|
||
// 登录成功后立即创建store
|
||
mainStore = createMainStore()
|
||
}
|
||
)
|
||
}
|
||
}
|
||
.onAppear {
|
||
debugInfoSync("🚀 AppRootView onAppear")
|
||
debugInfoSync(" isLoggedIn: \(isLoggedIn)")
|
||
debugInfoSync(" mainStore存在: \(mainStore != nil)")
|
||
}
|
||
}
|
||
|
||
private func createMainStore() -> StoreOf<MainFeature> {
|
||
debugInfoSync("🏗️ AppRootView: 创建新的MainStore实例")
|
||
return Store(
|
||
initialState: MainFeature.State()
|
||
) {
|
||
MainFeature()
|
||
}
|
||
}
|
||
}
|
||
//
|
||
//#Preview {
|
||
// AppRootView()
|
||
//}
|