Audioplayer et navigation

Bonjour à tous. Je débute sur Flutter. Première galère et défi pour moi.

Je visionne l’excellente formation et tente de creer ma première « Visit_Card ». Je test notamment de personnaliser la page détail en y insérant un bouton qui joue un audio.
Ma page d’accueil ne contient pas player. Par contre mes différentes pages détails 1, 2, 3 de mon arborescence contiennent un bouton play qui permettent à l’utilisateur de lancer une ambiance sonore. Jusque ici ça fonctionne. J’ai à peu pres compris le principe d’audioplayer.

Le souci est que je ne parviens pas à stopper le son quand je navigue dans le menu "hamburger":blush:
Ce qui a pour effet de superposer tous les sons.
Je cherche un moyen de stopper le son lorsque je navigue… pour obtenir idealement cette logique de navigation:

Accueil pas de son
Je cliquerais sur un item du menu hamburger… lancement de la page détail1 et de son 1.
Je cliquerais sur un autre item du menu… ça couperait le son 1… puis lancerait page détail2 et son 2.
Bref… éviter que les sons se superposent.

Un grand merci pour vos éventuels pistes qui éclaireraient le chemin du FlutterPadawan que je suis… merci​:+1::blush:

Bonjour,

Je ne sais pas quel package vous utilisez, mais il y a plusieurs solutions qui demandent plus de recherche notamment sur la création de fonction.

Vous pouvez associer un son à chaque screen puis faire appel à votre fonction stopSound préalablement créée dans la fonction dispose() dans chacun de vos StatefulWidget.

Sinon il y a la possibilité d’utiliser le système de routes qui est appelé à chaque fois que le Navigator est appelé. Ensuite, de renseigner le paramètre onGenerateRoute du Widget MaterialApp pour faire appel à la fonction stopSound() à chaque fois qu’on fait appel au Navigator(donc au changement de screen).

Pour finir, dans le fonction stopSound il suffira d’accéder à l’AudioPlayer est de faire un .stop

1 J'aime

Merci beaucoup Stephan. Ce retour me donne de nouvelles pistes d’apprentissage. Je vais tout d’abord m’intéresser à la fonction dispose().
Avant cela il faut que je saisisse davantage la logique globale de Flutter… classes fonctions etc…
Merci.:blush:

1 J'aime