音频播放完毕后如何更改播放IconButton

时间:2019-04-18 03:19:25

标签: android dart flutter

如何在音频播放完毕后更改IconButton图标

2 个答案:

答案 0 :(得分:1)

我正在显示一个简单的代码,该代码模拟播放音乐10秒钟,然后在图标更改后停止播放

{
    "book_title": "my book",
    "id": 45,
    "image": null,
    "price": 1000,
}

注意:如果已经在播放音乐,当前的工作状态不会改变,只是在单击按钮并结束后播放模拟音乐播放10秒钟。没什么。

答案 1 :(得分:0)

创建这样的PlayerEvent:

enum PlayerEvent {
  onStartPlaying, onStopPlaying, onPausePlaying
}

并创建一个这样的BLoC:

final playerBloc = PlayerBloc();

class PlayerBloc {
  StreamController<PlayerEvent> _playerEventStreamController = StreamController.broadcast();

  Stream<PlayerEvent> get playerEventStream => _playerEventStreamController.stream;

  dispatch(PlayerEvent event) {
    _playerEventStreamController.sink.add(event);
  }


  dispose(){
    _playerEventStreamController.close();
  }
}

使用流生成器将图标包装如下:

StreamBuilder<PlayerEvent>(
    stream: playerBloc.playerEventStream,
    initialData: PlayerEvent.onStopPlaying,
    builder: (context, snapshot) {
        switch(snapshot.data) {
            case PlayerEvent.onStopPlaying:
                return Icon(Icons.play_arrow);
            case PlayerEvent.onStartPlaying:
                return Icon(Icons.pause);
            case PlayerEvent.onPausePlaying:
                return Icon(Icons.play_arrow);
        }
    }
),

现在,只要您的音乐开始播放或停止播放,只需拨打以下电话:

playerBloc.dispatch(PlayerEvent.onStartPlaying);

playerBloc.dispatch(PlayerEvent.onStopPlaying);

,并且您的图标会根据您的音乐而改变。