easy_audio_players_with_track 0.0.1 copy "easy_audio_players_with_track: ^0.0.1" to clipboard
easy_audio_players_with_track: ^0.0.1 copied to clipboard

A Flutter package that simplifies audio playback management with features like play, pause, resume, and playlist management. Supports normal, loop, and shuffle playback modes with seamless transitions [...]

EasyAudioPlayer Package #

EasyAudioPlayerは、Dartで書かれた使いやすいオーディオプレーヤーライブラリです。このパッケージはaudioplayersをベースに構築され、音楽再生の管理を簡素化し、様々な再生モードと遷移オプションを提供します。

特徴 #

  • 🎵 シンプルな音楽再生コントロール(再生、一時停止、再開、シーク)
  • 🔄 複数の再生モード(通常、ループ、シャッフル)
  • 🔊 音量制御
  • 📋 プレイリスト管理と曲の切り替え
  • ⏱️ 再生時間とトラック長の追跡
  • 🔄 UIの再レンダリングコールバック機能

インストール #

pubspec.yamlに依存関係を追加してください:

dependencies:
  audioplayers: ^latest_version
  easy_audio_players_with_track_package: ^latest_version

基本的な使い方 #

初期設定 #

import 'package:easy_audio_players_with_track_package/easy_audio_players_with_track.dart';

// 音楽リストの作成
final musicList = [
  Music(name: "曲1", path: "/path/to/song1.mp3", volume: 50),
  Music(name: "曲2", path: "/path/to/song2.mp3", volume: 50),
  Music(name: "曲3", path: "/path/to/song3.mp3", volume: 50),
];

// EasyAudioPlayerのインスタンス作成
final player = EasyAudioPlayer.setMusicList(
  musicList, 
  "マイプレイリスト",
  () => setState(() {}), // UIを更新するためのコールバック
);

再生コントロール #

// 特定のインデックスから再生開始
player.start(0); // 最初の曲から再生開始

// 一時停止
player.pause();

// 再開
player.resume();

// 特定の位置にシーク(秒単位)
player.seek(30.0); // 30秒の位置にシーク

音楽モードの切り替え #

// 再生モードの切り替え(NORMAL -> LOOP -> SHUFFLE -> NORMAL)
player.toggleMusicMode();

// 現在の再生モードの取得
MusicMode currentMode = player.musicMode;

音量制御 #

// 音量変更(0-100の範囲)
player.changeVolume(75); // 音量を75%に設定

// 現在の音量を取得
int volume = player.nowVolume;

プレイリストナビゲーション #

// 次の曲へ
player.moveMusicList(Transition.NEXT);

// 前の曲へ
player.moveMusicList(Transition.PREVIOUS);

// ランダムな曲へ
player.moveMusicList(Transition.RANDOM);

再生状態と情報の取得 #

// 現在再生中かどうか
bool isPlaying = player.isPlaying;

// 現在の再生位置(秒)
double currentPosition = player.currentSeconds;

// 現在の曲の長さ(秒)
double duration = player.durationSeconds;

// 現在再生中の曲
Music currentTrack = player.currentMusic;

// プレイリスト名
String playlistName = player.listName;

高度な使い方 #

異なるインスタンスの作成方法 #

// 空のインスタンス
final emptyPlayer = EasyAudioPlayer.getEmptyInstance();

// 再レンダリングコールバック付きのインスタンス
final playerWithCallback = EasyAudioPlayer.getInstanceWithReRender(() {
  // UIを更新するコード
  setState(() {});
});

カスタム音楽リストの作成 #

final musicCreator = MusicCreater();

// 個別の曲を作成
final customSong = musicCreator.createMusic("カスタム曲", "/path/to/custom.mp3");

// パスとタイトルのリストから複数の曲を生成
final paths = ["/path/1.mp3", "/path/2.mp3"];
final names = ["曲1", "曲2"];
final customList = musicCreator.generateMusicList(paths, names);

主要クラスの概要 #

EasyAudioPlayer #

アプリケーションからのメインインターフェース。音楽再生の管理とコントロールを提供します。

Music #

音楽トラックを表すデータクラス。名前、ファイルパス、デフォルト音量を保持します。

MusicMode #

利用可能な再生モードを定義する列挙型:

  • NORMAL: 1回再生した後、次の曲へ進む
  • LOOP: 現在の曲を繰り返し再生
  • SHUFFLE: 再生完了後、ランダムな曲を選択

Transition #

プレイリスト内の移動タイプを定義する列挙型:

  • NEXT: 次の曲へ
  • PREVIOUS: 前の曲へ
  • RANDOM: ランダムな曲へ

Index #

プレイリスト内の現在の位置を管理するヘルパークラス。インデックスの増加、減少、ランダム選択をサポート。

実装詳細 #

このパッケージは内部でAudioPlayerクラスをラップし、シングルトンパターンを使用して音楽再生を管理します。主な実装は以下の通りです:

  • EasyAudioPlayer: パブリックAPI
  • _AudioPlayerManager: 内部シングルトンインスタンス
  • MusicModeSetter: 再生モードの変更ロジック
  • _CurrentListenerResistry: 現在の再生位置の監視
  • _DurationListenerResistry: 曲の長さの監視

注意点 #

  • デバイス上のファイルを再生するため、適切なファイルパーミッションが必要です
  • ファイルパスが正確であることを確認してください
  • 短時間に複数回start()メソッドを呼び出すと、内部で200msのディレイが発生します

例:Flutterウィジェットでの使用 #

class EasyAudioPlayerWidget extends StatefulWidget {
  @override
  _EasyAudioPlayerWidgetState createState() => _EasyAudioPlayerWidgetState();
}

class _EasyAudioPlayerWidgetState extends State<EasyAudioPlayerWidget> {
  late EasyAudioPlayer _player;
  
  @override
  void initState() {
    super.initState();
    
    // 音楽リストの設定
    final musicList = [
      Music(name: "曲1", path: "/path/to/song1.mp3", volume: 50),
      Music(name: "曲2", path: "/path/to/song2.mp3", volume: 50),
    ];
    
    // プレーヤーの初期化
    _player = EasyAudioPlayer.setMusicList(
      musicList, 
      "マイプレイリスト",
      () => setState(() {}), // UI更新のコールバック
    );
  }
  
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text(_player.currentMusic.name),
        Text("${_player.currentSeconds.toInt()}s / ${_player.durationSeconds.toInt()}s"),
        Row(
          children: [
            IconButton(
              icon: Icon(Icons.skip_previous),
              onPressed: () => _player.moveMusicList(Transition.PREVIOUS),
            ),
            IconButton(
              icon: Icon(_player.isPlaying ? Icons.pause : Icons.play_arrow),
              onPressed: _player.isPlaying ? _player.pause : _player.resume,
            ),
            IconButton(
              icon: Icon(Icons.skip_next),
              onPressed: () => _player.moveMusicList(Transition.NEXT),
            ),
          ],
        ),
        Slider(
          value: _player.currentSeconds,
          max: _player.durationSeconds,
          onChanged: (value) => _player.seek(value),
        ),
      ],
    );
  }
}

ライセンス #

このライブラリはMITライセンスの下で提供されています。

2
likes
125
points
12
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package that simplifies audio playback management with features like play, pause, resume, and playlist management. Supports normal, loop, and shuffle playback modes with seamless transitions between tracks and volume control.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

audioplayers, flutter

More

Packages that depend on easy_audio_players_with_track