mirror of
https://github.com/johrpan/musicus_mobile.git
synced 2025-10-27 03:07:26 +01:00
musicus_player: Add basic playback functionality
This commit is contained in:
parent
bf0168a2d3
commit
2df5546eb6
2 changed files with 66 additions and 5 deletions
|
|
@ -1,13 +1,43 @@
|
|||
import 'package:flutter/services.dart';
|
||||
|
||||
/// A simple music player.
|
||||
///
|
||||
/// Give it an URI using [setUri] and it will start playing.
|
||||
class MusicusPlayer {
|
||||
/// Called, when the player reaches the end of the audio file.
|
||||
final void Function() onComplete;
|
||||
|
||||
final _channel = MethodChannel('de.johrpan.musicus_player/platform');
|
||||
|
||||
MusicusPlayer() {
|
||||
/// Create a new player.
|
||||
///
|
||||
/// This will do nothing, until [setUri] was called. If the player reaches
|
||||
/// the end of the current audio file, [onComplete] will be called.
|
||||
MusicusPlayer({this.onComplete}) {
|
||||
_channel.setMethodCallHandler(_handleMethodCall);
|
||||
}
|
||||
|
||||
Future<void> _handleMethodCall(MethodCall call) {
|
||||
// TODO: Implement.
|
||||
Future<void> _handleMethodCall(MethodCall call) async {
|
||||
if (call.method == 'onComplete' && onComplete != null) {
|
||||
onComplete();
|
||||
}
|
||||
}
|
||||
|
||||
/// Set URI of the audio file to play.
|
||||
///
|
||||
/// If the player will always stop doing, what it did before, and start
|
||||
/// playing from the provided URI if possible.
|
||||
Future<void> setUri(String uri) async {
|
||||
await _channel.invokeMethod('setUri', {'uri': uri});
|
||||
}
|
||||
|
||||
/// Play from the current URI and resume playback if previously paused.
|
||||
Future<void> play() async {
|
||||
await _channel.invokeMethod('play');
|
||||
}
|
||||
|
||||
/// Pause playback.
|
||||
Future<void> pause() async {
|
||||
await _channel.invokeMethod('pause');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue