Fix publishing changes during view updates warning

Defer state mutations in .onReceive handlers to next run loop
by wrapping them in Task { @MainActor in ... }
This commit is contained in:
世界
2026-01-05 14:15:53 +08:00
parent e68af19112
commit af9cfd0f59
3 changed files with 31 additions and 25 deletions
+9 -7
View File
@@ -77,13 +77,15 @@ public struct MainView: View {
}
.onReceive(NotificationCenter.default.publisher(for: .navigateToSettingsPage)) { notification in
guard let page = notification.object as? SettingsPage else { return }
pendingSettingsPage = page
if viewModel.selection == .settings {
settingsNavigationPath = NavigationPath()
settingsNavigationPath.append(page)
pendingSettingsPage = nil
} else {
viewModel.selection = .settings
Task { @MainActor in
pendingSettingsPage = page
if viewModel.selection == .settings {
settingsNavigationPath = NavigationPath()
settingsNavigationPath.append(page)
pendingSettingsPage = nil
} else {
viewModel.selection = .settings
}
}
}
.environment(\.selection, $viewModel.selection)