【问题标题】:AudioPlayer pause method not working - FlutterAudioPlayer 暂停方法不起作用 - Flutter
【发布时间】:2021-11-10 12:41:32
【问题描述】:

我正在使用 AudioPlayer 包来开发音频/媒体播放器。为了从资产文件夹中加载音乐,我使用了 AudioCache 类,而为了利用其他方法(暂停、停止和持续时间),我使用了 AudioPlayer。

当我单击按钮播放音乐时,它可以正常工作,但是当我再次单击该按钮以暂停音乐时,它根本不起作用(音乐继续播放)并且两个图标都没有改变点击

我做错了什么?

这里是代码

class Music extends StatefulWidget {

  @override
  _MusicState createState() => _MusicState();
}

class _MusicState extends State<Music> {

  Duration duration = new Duration();
  Duration position = new Duration();
  AudioCache player = AudioCache();  // AudioCache 
  AudioPlayer audioPlayer = AudioPlayer(); // AudioPlayer
  bool playing = false;


  void getAudio() async{

    if(playing){

      var result = await audioPlayer.pause();

      if(result == 1) {
        setState(() {
          playing = false;
        });
      }

    }else{

      var result = await player.play('audio/music.mp3'); // to play the music from asset folder or local file

      if(result == 1) {
        setState(() {
          playing = true;
        });
      }
    }

    audioPlayer.onDurationChanged.listen((Duration dd){
      setState(() {
        duration = dd;
      });
    });

    audioPlayer.onAudioPositionChanged.listen((Duration dd){
      setState(() {
        position = dd;
      });
    });

  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('App Name', style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontFamily: 'oswald'),),
        centerTitle: true,
        flexibleSpace: Image(
          image: AssetImage('images/bg.jpg'),
          fit: BoxFit.cover,
        ),
      ),
      backgroundColor: Colors.grey[200],
      body: SafeArea(
          child: Container(
            padding: EdgeInsets.all(25.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Slider(
                  value: position.inSeconds.toDouble(),
                  min: 0,
                  max: duration.inSeconds.toDouble(),
                  activeColor: Colors.deepOrange,
                  onChanged: (double value){
                    setState(() {
                      audioPlayer.seek(new Duration(seconds: value.toInt()));
                    });
                  },
                ),
                SizedBox(height: 10.0,),
                Ink(
                  decoration: const ShapeDecoration(
                    color: Colors.deepOrange,
                    shape: CircleBorder(),
                  ),
                  child: IconButton(
                    icon: Icon(playing == false ? Icons.play_arrow : Icons.pause_circle),
                    iconSize: 50.0,
                    color: Colors.white,
                    onPressed: () {
                        getAudio(); // call function
                    },
                  ),
                ),
              ],
            ),
          ),
      ),
    );
  }
}

【问题讨论】:

    标签: flutter dart audio-player flutter-audio-query


    【解决方案1】:

    您需要将result 设置为audioplayer 属性:

    if (result.state == PlayerState.PLAYING) {
        setState(() {
          playing = true;
        });
      }
      audioPlayer = result;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 2012-10-06
      相关资源
      最近更新 更多