Skip to content

Latest commit

 

History

History
313 lines (261 loc) · 10 KB

README.pt-BR.md

File metadata and controls

313 lines (261 loc) · 10 KB

on_audio_room

Pub.dev Platforms Flutter

on_audio_room é um Flutter Package usado para criar um "quarto" para guardar informações dos audios [Favoritos, Playlist Interna, Mais Tocadas, etc...].

Esse Package funciona como uma "extenção" para on_audio_query e alguns métodos irão depender dele.

Ajuda:

Algum problema? Issues
Alguma sugestão? Pull request

Traduções:

NOTE: Fique à vontade para ajudar nas traduções

Tópicos:

Como instalar:

Adicione o seguinte codigo para seu pubspec.yaml:

dependencies:
  on_audio_room: ^2.2.1+1

Algumas qualidades:

  • Área para favoritos
  • Área para últimas tocadas
  • Área para mais tocadas
  • Área para playlists internas

TODO:

  • Adicionar uma melhor performace para todo o plugin.
  • Adicionar [Qualidades].
  • Arrumar erros.

Como usar:

Antes de chamar algum método você precisa iniciar o/os "quarto"/"quartos":

void main() async {
  //Inicia apenas um "quarto".
  await OnAudioRoom().initRoom(RoomType.FAVORITES); //Coloque qual "quarto". 
  runApp(MaterialApp(home: MyApp()));
}

//Or

void main() async {
  //Inicia todos os "quartos".
  await OnAudioRoom().initRoom(); //Não coloque o "quarto".
  runApp(MaterialApp(home: MyApp()));
}

Importante:

  • Esse método apenas FUNCIONARÁ 100% se você adicionar um "async/await", se não, a pagina vai carregar quase no mesmo tempo e vai causar um erro.
  • LEMBRE-SE DE FECHAR OS "QUARTOS" NO "DISPOSE".
  • Veja a documentação
OnAudioRoom() // O comando principal para usar o plugin.

Todos os tipos de métodos nesse plugin:

Métodos para o "quarto"

Methods Parameters Return
initRoom (RoomType, SubDir?) bool
closeRoom bool
deleteRoomFile bool
getRoomInfo RoomEntity
clearAll bool

Global methods

Methods Parameters Return
addTo (RoomType, Entity, PlaylistKey?) int?
addAllTo (RoomType, Entity, PlaylistKey?) List<int>
updateRoom (RoomType, Entity) bool
deleteFrom (RoomType, EntityKey, PlaylistKey?) bool
deleteAllFrom (RoomType, EntityKeys, PlaylistKey?) bool
clearRoom (RoomType) bool
checkIn (RoomType, EntityKey, PlaylistKey?) bool

Query methods

Methods Parameters Return
queryFromFavorites (EntityKey) FavoritesEntity
queryFavorites (Limit?, Reverse?, RoomSortType?) List<FavoritesEntity>
queryFromLastPlayed (EntityKey) LastPlayedEntity
queryLastPlayed (Limit?, Reverse?, RoomSortType?) List<LastPlayedEntity>
queryFromMostPlayed (EntityKey) MostPlayedEntity
queryMostPlayed (Limit?, Reverse?, RoomSortType?) List<MostPlayedEntity>
queryFromPlaylist (PlaylistKey, EntityKey) SongEntity
queryAllFromPlaylist (PlaylistKey, Limit?, Reverse?, RoomSortType?) List<SongEntity>

Playlist methods

Methods Parameters Return
createPlaylist (PlaylistName) int?
deletePlaylist (PlaylistKey) bool
renamePlaylist (PlaylistKey, NewName) bool
clearPlaylists bool
queryPlaylist (PlaylistKey) PlaylistEntity
queryPlaylists (Limit?, Reverse?) List<PlaylistEntity>

Exemplos:

Todos os exemplos irão usar [on_audio_query] plugin para adquirir informações sobre os audios/músicas

addTo

  //Se você usa [on_audio_query] apenas precisa extender SongModel para criar qualquer entidade.
  someName() async {
    //O retorno irá sé o id da música dentro do banco de dados.
    int? addToResult = await OnAudioRoom().addTo(
      RoomType.FAVORITES, 
      entity[index].getMap.toFavoritesEntity(),
    );
  }

  //Se não você usa [on_audio_query] apenas crie um map com todas as informações.
  someOtherName() async {
    Map<dynamic, dynamic> favoritesEntity = {
      "_data": song.data,
      "_display_name": song.displayName,
      "_id": song.id,
      "album": song.album,
      "album_id": song.albumId,
      "artist": song.artist,
      "artist_id": song.artistId,
      "date_added": song.dateAdded,
      "duration": song.duration,
      "title": song.title,
      "artwork": song.artwork,
    };

    //Agora, adicione para o banco de dados.
    //O retorno irá sé o id da música dentro do banco de dados.
    int? addToResult = await OnAudioRoom().addTo(
      RoomType.FAVORITES, 
      favoritesEntity.toFavoritesEntity(),
    ); 
  }

addAllTo

  //Se você usa [on_audio_query] apenas precisa extender SongModel para criar qualquer entidade.
  someName() async {
    //Crie uma lista com todos os SongModel.
    List<SongModel> listOfSongs;
    List<dynamic> listOfEntities;
    
    //Adicione todas as músicas do model para a entidade.
    listOfSongs.forEach(element) {
      listOfEntities.add(element.getMap.toFavoritesEntity());
    }

    //Agora, adicione para o banco de dados.
    //O retorno irá sé o id da música dentro do banco de dados.
    List<int> addAllToResult = await OnAudioRoom().addAllTo(
      RoomType.FAVORITES, 
      listOfEntities,
      //playlistKey,
    );
  }

  //Se não você usa [on_audio_query] apenas crie uma lista de map com todas as informações.
  someOtherName() async {
    List<dynamic> listOfEntities;

    listOfSongs.forEach(element) {
      Map<dynamic, dynamic> favoritesEntity = {
      "last_data": song.data,
      "display_name": song.displayName,
      "id": song.id,
      "album": song.album,
      "album_id": song.albumId,
      "artist": song.artist,
      "artist_id": song.artistId,
      "date_added": song.dateAdded,
      "duration": song.duration,
      "title": song.title,
      "artwork": song.artwork,
      };

      listOfEntities.add(favoritesEntity.toFavoritesEntity());
    }

    //Agora, adicione para o banco de dados.
    //O retorno irá sé o id da música dentro do banco de dados.
    List<int> addAllToResult = await OnAudioRoom().addAllTo(
      RoomType.FAVORITES, 
      favoritesEntity,
      //playlistKey,
    ); 
  }

deleteFrom

  someName() async {
    //O retorno será [true] se a música foi deletada ou [false] se não.
    bool deleteFromResult = await OnAudioRoom().deleteFrom(
      RoomType.FAVORITES,
      EntityKey,
      //playlistKey,
    );
  }

  //Quando [Adicionando/Deletando/Checando] músicas da playlist, lembre-se de definir um
  //[PlaylistId] ou retornará um erro.
  someName() async {
    //O retorno será [true] se a música foi deletada ou [false] se não.
    bool deleteFromResult = await OnAudioRoom().deleteFrom(
      RoomType.PLAYLIST,
      EntityKey,
      PlaylistKey: PlaylistKey,
    );
  }

deleteAllFrom

  someName() async {
    List<int> listOfKeysToDelete = [...];
    //O retorno será [true] se todas as músicas foram deletadas ou [false] se não.
    bool deleteAllFromResult = await OnAudioRoom().deleteAllFrom(
      RoomType.FAVORITES,
      listOfKeysToDelete,
      //playlistKey,
    );
  }

clearRoom

  //Esse é bem simples.
  someName() async {
    //O retorno será [true] se todas as músicas foram deletadas ou [false] se não.
    bool deleteAllFromResult = await OnAudioRoom().clearRoom(
      RoomType.FAVORITES,
      //playlistKey,
    );
  }

checkIn

  //Você vai usar esse para chegar se a música foi adicionada.
  //Por quê? Se você tentar adicionar duas músicas iguais, irá funcionar, para evitar isso
  //faça a checagem.
  someName() async {
    //O retorno será [true] se a música já foi adicionada ou [false] se não.
    bool checkInResult = await OnAudioRoom().checkIn(
      RoomType.FAVORITES,
      EntityKey,
      //playlistKey,
    );
  }

queryFromFavorites

  someName() async {
    //Com esse método você irá definir um id e irá receber todas as informações sobre a música.
    FavoritesEntity? queryFromResult = await OnAudioRoom().queryFromFavorites(
      EntityKey,
    );
  }

queryFavorites

  someName() async {
    //Com esse método você irá pegar todas as músicas e todas as informações baseado no Type[Entity].
    //
    //Você pode adicionar um valor como parametro para definir quantas músicas irão voltar.
    //Você pode adicionar um [bool] como parametro para definir se a lista vai ser ao contrário ou não.
    //Você pode adicionar um [RoomSortType] como parametro para definir a ordem da lista.
    List<FavoritesEntity> queryResult = await OnAudioRoom().queryFavorites(
      100, //Default: 50
      true, //Default: false
      RoomSortType.TITLE //Default: null
    );
  }

LICENSE: