#flutter #dart
Вопрос:
Я пытаюсь воспроизвести/приостановить звук в своем приложении flutter. Я вызываю функцию аудиоплеера на вкладке в нижней панели навигации. Кроме того, я хотел бы воспроизводить/приостанавливать звук на разных страницах моего приложения. Звук воспроизводится, когда я нажимаю кнопку на панели навигации, но когда я перехожу на другую страницу своего приложения, звук перекрывается.
Вот код класса аудиоплеера:
class AudioPlayerWithLocalAsset extends StatefulWidget { const AudioPlayerWithLocalAsset({ Key? key }) : super(key: key); @override _AudioPlayerWithLocalAssetState createState() =gt; _AudioPlayerWithLocalAssetState(); } class _AudioPlayerWithLocalAssetState extends Statelt;AudioPlayerWithLocalAssetgt; { AudioPlayer audioPlayer = AudioPlayer(); PlayerState audioPlayerState = PlayerState.PAUSED; static AudioCache audioCache = AudioCache(); String path = 'sample.mp3'; int first = 1; @override void initState(){ super.initState(); audioCache = AudioCache(fixedPlayer: audioPlayer); audioPlayer.onPlayerStateChanged.listen((PlayerState s){ setState(() { audioPlayerState = s; }); }); } @override void dispose() { super.dispose(); audioPlayer.release(); audioPlayer.dispose(); audioCache.clearAll(); } playMusic() async { await audioCache.loop(path); } pauseMusic() async { await audioPlayer.pause(); } resumeMusic() async { await audioPlayer.resume(); } @override Widget build(BuildContext context) { return Tab( icon: IconButton( iconSize: 4.h, onPressed: () { audioPlayerState == PlayerState.PLAYING ? pauseMusic() : playMusic(); }, icon: Icon(audioPlayerState == PlayerState.PLAYING ? Icons.music_note : Icons.music_off, ), ), ); } }
и я называю это в другом классе виджетов dart
tabs: lt;Widgetgt;[ Tab( icon: Icon(Icons.info_outline, size: 4.h,), ), **AudioPlayerWithLocalAsset(),** Tab( icon: Icon(Icons.exit_to_app_outlined, size: 4.h), ), ],