From 841bd1082250499289b83cca740380f6f08518ba Mon Sep 17 00:00:00 2001 From: Ryan Heise Date: Tue, 9 Jun 2020 01:49:17 +1000 Subject: [PATCH] Use null seek parameter on method channel --- .../java/com/ryanheise/just_audio/AudioPlayer.java | 14 ++++++-------- darwin/Classes/AudioPlayer.m | 3 ++- lib/just_audio.dart | 3 +-- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java b/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java index 300735d..2a2c67c 100644 --- a/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java +++ b/android/src/main/java/com/ryanheise/just_audio/AudioPlayer.java @@ -267,14 +267,8 @@ public class AudioPlayer implements MethodCallHandler, Player.EventListener, Met result.success(null); break; case "seek": - Object position = args.get(0); - long position2; - if (position instanceof Integer) { - position2 = (Integer) position; - } else { - position2 = (Long) position; - } - seek(position2 == -2 ? C.TIME_UNSET : position2, result); + Long position = getLong(args.get(0)); + seek(position == null ? C.TIME_UNSET : position, result); break; case "dispose": dispose(); @@ -533,6 +527,10 @@ public class AudioPlayer implements MethodCallHandler, Player.EventListener, Met sendError("abort", "Connection aborted"); } + public static Long getLong(Object o) { + return (o == null || o instanceof Long) ? (Long)o : new Long(((Integer)o).intValue()); + } + enum PlaybackState { none, stopped, diff --git a/darwin/Classes/AudioPlayer.m b/darwin/Classes/AudioPlayer.m index 5336911..1c056af 100644 --- a/darwin/Classes/AudioPlayer.m +++ b/darwin/Classes/AudioPlayer.m @@ -74,7 +74,8 @@ [self setAutomaticallyWaitsToMinimizeStalling:(BOOL)[args[0] boolValue]]; result(nil); } else if ([@"seek" isEqualToString:call.method]) { - [self seek:[args[0] intValue] result:result]; + int position = args[0] == [NSNull null] ? -2 : [args[0] intValue]; + [self seek:position result:result]; result(nil); } else if ([@"dispose" isEqualToString:call.method]) { [self dispose]; diff --git a/lib/just_audio.dart b/lib/just_audio.dart index 96c2c03..d3d0202 100644 --- a/lib/just_audio.dart +++ b/lib/just_audio.dart @@ -441,8 +441,7 @@ class AudioPlayer { /// any state except for [AudioPlaybackState.none] and /// [AudioPlaybackState.connecting]. Future seek(final Duration position) async { - await _invokeMethod( - 'seek', [position != null ? position.inMilliseconds : -2]); + await _invokeMethod('seek', [position?.inMilliseconds]); } /// Release all resources associated with this player. You must invoke this