π₯οΈ Navigation, modules, theme (iOS)
After connect, the connected AzeooSDK exposes:
sdk.navigate(to:)+ back operations β typed navigationsdk.setModuleContainer(_:)+sdk.tabHost(for:)β adaptive native UI coordinationsdk.modules.nutrition/sdk.modules.trainingβ embeddingsdk.themeβ theme runtime control
Typed navigationβ
sdk.navigate(to: .nutrition(.plan(id: "abc-123")))
sdk.navigate(to: .training(.workouts))
sdk.back()
sdk.backToRoot()
sdk.canGoBack { result in /* Bool */ }
sdk.getCurrentRoute { result in /* String? */ }
Full catalogue: Destination catalogue (nutrition + training).
Module coordinators (setModuleContainer)β
Install once at startup so cross-module navigation flips your native UI:
sdk.setModuleContainer(AzeooUITabBarCoordinator(self, mapping: [
.nutrition: 1, .training: 2,
]))
Built-in coordinators:
AzeooUITabBarCoordinatorβ forUITabBarControllerAzeooUINavigationCoordinatorβ forUINavigationControllerpush/popAzeooSwiftUITabCoordinator<Tag>β for SwiftUITabViewwith aBinding
Custom containers (sidebar / page view / drawer): implement AzeooModuleContainer directly β one method.
Tab hosts (sdk.tabHost(for:))β
Returns a thin UIViewController hosting the shared Flutter surface for one module β designed to go directly into UITabBarController.viewControllers:
let nutritionTab = sdk.tabHost(for: .nutrition)
let trainingTab = sdk.tabHost(for: .training)
See Multi-tab hosting for the full pattern.
Embedding (single-screen)β
For one-off full-screen embeds:
// UIKit
sdk.modules.nutrition.display(in: hostVC, bottomSafeArea: true) { _ in }
// SwiftUI
sdk.modules.nutrition.getView(bottomSafeArea: true)
Theme (sdk.theme)β
setMode, setLightMode, setDarkMode, setSystemMode, toggleMode, setPrimaryColor, setSecondaryColor, setLightColors, setDarkColors, setTheme, resetToDefault, getCurrentTheme.