easy_audio_players_with_track 0.0.1
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ライセンスの下で提供されています。