🏋️ Module Entraînement (iOS)
Les écrans du module Entraînement sont atteints via l'API typée AzeooDestination :
sdk.navigate(to: .training(.workouts))
Destinations
Chaque écran d'entraînement routable, en tant que cas de AzeooDestination.Training :
| Destination | Affiche |
|---|---|
.home | Accueil entraînement |
.workouts | Liste des plans d'entraînement |
.exercises | Liste des exercices |
.progress | Progression |
.schedule | Planning |
Le détail d'une séance et le détail d'un exercice s'affichent en feuilles modales dans Flutter, pas comme destinations routables. L'API typée n'expose volontairement pas .training(.workout(id:)) ni .training(.exercise(id:)) — il n'y aurait pas de route vers laquelle naviguer. Les anciennes méthodes showPlan(planId:) et showExercise(exerciseId:) acceptaient des ID mais les ignoraient silencieusement ; l'API typée rend cette limitation explicite.
Exemples
Ouvrir la liste des séances
sdk.navigate(to: .training(.workouts))
Ouvrir la progression
sdk.navigate(to: .training(.progress))
Aller au planning
sdk.navigate(to: .training(.schedule))
Intégrer le module
Pour une app UIKit ou SwiftUI basée sur des onglets, utilisez sdk.tabHost(for: .training) avec le coordinateur approprié — voir Hébergement multi-onglets pour les exemples complets.
Pour une présentation plein écran ponctuelle :
sdk.modules.training.display(in: hostVC, bottomSafeArea: true) { result in
// Flutter is now embedded in `hostVC`.
sdk.navigate(to: .training(.exercises))
}
SwiftUI
sdk.modules.training.getView(bottomSafeArea: true)
.frame(maxWidth: .infinity, maxHeight: .infinity)
Retour arrière
sdk.back()
sdk.backToRoot() // back to training home
sdk.canGoBack { result in /* Bool */ }