
- 在CreateFeedFeature中新增isPresented依赖,确保在适当的上下文中执行视图关闭操作。 - 在FeedFeature中优化状态管理,简化CreateFeedView的呈现逻辑。 - 新增FeedListFeature和MainFeature,整合FeedListView和底部导航功能,提升用户体验。 - 更新HomeView和SplashView以集成MainView,确保应用结构一致性。 - 在多个视图中调整状态管理和导航逻辑,增强可维护性和用户体验。
88 lines
3.0 KiB
Swift
88 lines
3.0 KiB
Swift
import SwiftUI
|
|
import ComposableArchitecture
|
|
|
|
struct HomeView: View {
|
|
let store: StoreOf<HomeFeature>
|
|
let onLogout: () -> Void
|
|
@ObservedObject private var localizationManager = LocalizationManager.shared
|
|
@State private var selectedTab: Tab = .feed
|
|
|
|
var body: some View {
|
|
NavigationStack {
|
|
GeometryReader { geometry in
|
|
ZStack {
|
|
// 使用 "bg" 图片作为背景 - 全屏显示
|
|
Image("bg")
|
|
.resizable()
|
|
.aspectRatio(contentMode: .fill)
|
|
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
.clipped()
|
|
.ignoresSafeArea(.all)
|
|
|
|
// 主要内容区域 - 全屏显示
|
|
ZStack {
|
|
switch selectedTab {
|
|
case .feed:
|
|
FeedView(
|
|
store: store.scope(
|
|
state: \.feedState,
|
|
action: \.feed
|
|
),
|
|
onShowCreateFeed: {
|
|
store.send(.showCreateFeed)
|
|
}
|
|
)
|
|
.transition(.opacity)
|
|
case .me:
|
|
MeView(onLogout: onLogout)
|
|
.transition(.opacity)
|
|
}
|
|
}
|
|
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
|
|
// 底部导航栏 - 悬浮在最上层
|
|
VStack {
|
|
Spacer()
|
|
BottomTabView(selectedTab: $selectedTab)
|
|
}
|
|
.padding(.bottom, geometry.safeAreaInsets.bottom + 100)
|
|
}
|
|
}
|
|
.onAppear {
|
|
store.send(.onAppear)
|
|
}
|
|
.sheet(isPresented: Binding(
|
|
get: { store.withState(\.isSettingPresented) },
|
|
set: { _ in store.send(.settingDismissed) }
|
|
)) {
|
|
SettingView(store: store.scope(state: \.settingState, action: \.setting))
|
|
}
|
|
.navigationDestination(isPresented: Binding(
|
|
get: { store.withState(\.route) == .createFeed },
|
|
set: { isPresented in
|
|
if !isPresented {
|
|
store.send(.createFeedDismissed)
|
|
}
|
|
}
|
|
)) {
|
|
CreateFeedView(
|
|
store: store.scope(
|
|
state: \.feedState.createFeedState,
|
|
action: \.feed.createFeed
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//#Preview {
|
|
// HomeView(
|
|
// store: Store(
|
|
// initialState: HomeFeature.State()
|
|
// ) {
|
|
// HomeFeature()
|
|
// }, onLogout: {}
|
|
// )
|
|
//}
|