从 iOS 17 Observation 迁移至 iOS 16 兼容的 Combine 架构
将最低部署版本降至 iOS 16,以 ObservableObject 替换 @Observable,新增导航与 UI 兼容层,并补充登录冒烟 UI 测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -5,7 +5,7 @@
|
||||
// Created by Codex on 2026/6/18.
|
||||
//
|
||||
|
||||
import Observation
|
||||
import Combine
|
||||
import SwiftUI
|
||||
|
||||
/// 应用内可导航目标,承载各 Tab 内部的路由目的地。
|
||||
@ -60,10 +60,9 @@ extension OrdersRoute {
|
||||
}
|
||||
|
||||
@MainActor
|
||||
@Observable
|
||||
/// 单个 NavigationStack 的路径容器,用于保存某个 Tab 的导航历史。
|
||||
final class RouterPath {
|
||||
var path: [AppRoute] = []
|
||||
final class RouterPath: ObservableObject {
|
||||
@Published var path: [AppRoute] = []
|
||||
|
||||
/// 将指定路由压入当前 Tab 的导航栈。
|
||||
func navigate(to route: AppRoute) {
|
||||
@ -77,13 +76,12 @@ final class RouterPath {
|
||||
}
|
||||
|
||||
@MainActor
|
||||
@Observable
|
||||
/// 主导航状态中心,管理当前 Tab 和每个 Tab 独立的 NavigationStack 路径。
|
||||
final class AppRouter {
|
||||
var selectedTab: AppTab = .home
|
||||
var selectedOrdersEntry: OrdersEntry = .storeOrders
|
||||
private(set) var pendingOrderScanCode: String?
|
||||
private var routers: [AppTab: RouterPath] = [:]
|
||||
final class AppRouter: ObservableObject {
|
||||
@Published var selectedTab: AppTab = .home
|
||||
@Published var selectedOrdersEntry: OrdersEntry = .storeOrders
|
||||
@Published private(set) var pendingOrderScanCode: String?
|
||||
@Published private var routers: [AppTab: RouterPath] = [:]
|
||||
|
||||
/// 获取指定 Tab 对应的路由路径容器,不存在时自动创建。
|
||||
func router(for tab: AppTab) -> RouterPath {
|
||||
|
||||
Reference in New Issue
Block a user