anchor.diff:      if (hasNext()) {
         playlistIndex += 1;
       }
  -    return playlistIndex;
  +    return playedAudios[playlistIndex];
     }
   
     List<int> playedAudios = [];
   
  -  int shuffle() {
  -    playlistIndex = _shuffleNumbers();
  -    playedAudios.add(playlistIndex);
  -    return playlistIndex;
  +  fillPlayedAudios() {
  +    for (var i = 0; i < this.playlist.audios.length; i++) {
  +      playedAudios.add(i);
  +    }
  +  }
  +
  +  clearPlayeAudio(bool shuffle) {
  +    playedAudios.clear();
  +    if (shuffle) {
  +      shuffleAudios();
  +    } else {
  +      fillPlayedAudios();
  +    }
  +  }
  +
  +  shuffleAudios() {
  +    for (var i = 0; i < this.playlist.audios.length; i++) {
  +      playlistIndex = _shuffleNumbers();
  +      playedAudios.add(playlistIndex);
  +    }
     }
   
     int _shuffleNumbers() {
  
positive.code: 
    Future<void> _openPlaylistCurrent() async {
      if (_playlist != null) {
        return _open(
          _playlist.currentAudio(),
          forcedVolume: _playlist.volume,
  
negative.code:   }
  
    Audio currentAudio() {
      return audioAt(at: playedAudios[playlistIndex]);
    }
  
    bool hasNext() {
  