如何在随机播放时跳到下一首歌曲?反应本机

时间:2021-01-01 07:36:35

标签: javascript react-native

我正在构建一个音乐播放器,我遇到了这个问题,想不出解决这个问题的方法,我有随机播放模式,当随机播放打开时,我按下下一首歌曲,它会转到下一首歌曲,然后当曲目结束时,它会验证随机播放是否打开,如果是,则重复曲目,如果没有,则重复下一首歌曲,这里的问题是当我从队列中选择另一首曲目时,因为当我这样做时,听众将执行,如果 shuffle 已打开且 next 已关闭,则再次验证,导致循环,我只能按 next 而不是从队列中转到下一首歌曲,代码如下:

state = {
  shuffle: true,
  next_song: false,
  repeat_song: "",
}

if (this.state.repeat && !this.state.next_song) { //if user want to repeat a track
                await TrackPlayer.pause();
                await TrackPlayer.skip(this.state.repeat_song);
                TrackPlayer.play();
            }else {
                let {title} = await TrackPlayer.getTrack(current_song);
                let {current_track_id, current_track, cover, artist} = await this.get_info_track(tracks, title);
                await AsyncStorage.setItem("last_song", JSON.stringify(current_track));
                await AsyncStorage.setItem("last_song_duration", JSON.stringify(0));
                this.setState({
                    current_track_id: current_track_id, 
                    current_track: current_track, 
                    cover: cover, 
                    artist: artist,
                    repeat_song_id: current_song,
                    last_song_duration: 0,
                    next_song: false,
                });
            }

update_next_song = () => {    //this will execute when the user press next, once is executed will be passed to false again 
    this.setState({next_song: true});
}

然后问题是当我从队列中选择时,下一首歌曲已经设置为false,并且第一个条件将始终为真,所以想不出办法来做到这一点

1 个答案:

答案 0 :(得分:0)

您好,您可以将歌曲数组放入

Container(
    height:100,
    child: HtmlWidget( article.content ,
      bodyPadding: EdgeInsets.zero,
      overflow: TextOverflow.fade,
      textStyle: GoogleFonts.nunito(textStyle: utils.ThemeText.relatedArticleTitle,fontStyle: FontStyle.normal,),
    ),
),

并使用

 TrackPlayer.add(Array). 

它会根据您的要求工作,谢谢:-)

TrackPlayer.skipToNext()
TrackPlayer.skipToPrevious();