import SwiftUI /// 登录守卫占位:未登录时显示,点按弹出登录页。登录成功后 session 变化,父视图自动切走。 struct LoginRequiredView: View { var message: String = "登录后查看" @Environment(SessionStore.self) private var session @State private var showLogin = false var body: some View { VStack(spacing: 20) { Image(systemName: "person.crop.circle.badge.questionmark") .font(.system(size: 60)) .foregroundStyle(AppColors.gray400) Text(message) .foregroundStyle(.secondary) .multilineTextAlignment(.center) .padding(.horizontal, 40) Button { showLogin = true } label: { Text("登录 / 注册") .font(.headline) .frame(maxWidth: .infinity) .padding(.vertical, 14) .background(AppColors.primary) .foregroundStyle(.black) .clipShape(RoundedRectangle(cornerRadius: 12)) } .padding(.horizontal, 40) } .frame(maxWidth: .infinity, maxHeight: .infinity) .sheet(isPresented: $showLogin) { LoginView().environment(session) } } }