diff --git a/musicus_player/android/src/main/kotlin/de/johrpan/musicus_player/MusicusPlayerPlugin.kt b/musicus_player/android/src/main/kotlin/de/johrpan/musicus_player/MusicusPlayerPlugin.kt index ac3d782..897045f 100644 --- a/musicus_player/android/src/main/kotlin/de/johrpan/musicus_player/MusicusPlayerPlugin.kt +++ b/musicus_player/android/src/main/kotlin/de/johrpan/musicus_player/MusicusPlayerPlugin.kt @@ -47,6 +47,10 @@ public class MusicusPlayerPlugin: FlutterPlugin, MethodCallHandler { } else if (call.method == "getPosition") { // TODO: Check, if mediaPlayer is in a valid state. result.success(mediaPlayer?.getCurrentPosition()) + } else if (call.method == "seekTo") { + // TODO: Check, if mediaPlayer is in a valid state. + mediaPlayer?.seekTo(call.argument("positionMs")!!) + result.success(null) } else if (call.method == "pause") { mediaPlayer?.pause() result.success(null) diff --git a/musicus_player/lib/musicus_player.dart b/musicus_player/lib/musicus_player.dart index 7a0bdc3..bf33f50 100644 --- a/musicus_player/lib/musicus_player.dart +++ b/musicus_player/lib/musicus_player.dart @@ -44,6 +44,11 @@ class MusicusPlayer { return await _channel.invokeMethod('getPosition'); } + /// Seek to a new position, which should be provided in milliseconds. + Future seekTo(int positionMs) async { + await _channel.invokeMethod('seekTo', {'positionMs': positionMs}); + } + /// Pause playback. Future pause() async { await _channel.invokeMethod('pause');