Aller au contenu principal

🏋️ 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 :

DestinationAffiche
.homeAccueil entraînement
.workoutsListe des plans d'entraînement
.exercisesListe des exercices
.progressProgression
.schedulePlanning
Les écrans de détail sont des feuilles modales

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 */ }

Voir aussi