import SwiftUI @MainActor enum AppRoute: Hashable { case login case avatarBox case feedbackView case feedbackDetail(type: FeedbackView.FeedbackType) case mediaUpload case blindBox(mediaType: BlindBoxView.BlindBoxMediaType) case blindOutcome(media: MediaType) case memories case subscribe case userInfo case account case about @ViewBuilder var view: some View { switch self { case .login: LoginView() case .avatarBox: AvatarBoxView() case .feedbackView: FeedbackView() case .feedbackDetail(let type): FeedbackDetailView(feedbackType: type) case .mediaUpload: MediaUploadView() case .blindBox(let mediaType): BlindBoxView(mediaType: mediaType) case .blindOutcome(let media): BlindOutcomeView(media: media) case .memories: MemoriesView() case .subscribe: SubscribeView() case .userInfo: UserInfo() case .account: AccountView() case .about: AboutUsView() } } } @MainActor class Router: ObservableObject { static let shared = Router() @Published var path = NavigationPath() private init() {} func navigate(to destination: AppRoute) { path.append(destination) } func pop() { path.removeLast() } func popToRoot() { path = NavigationPath() } }