From adfe7274fa9c7340b4433f61e83f491f381387dc Mon Sep 17 00:00:00 2001 From: gianlucaparadise Date: Mon, 7 Feb 2022 06:56:19 +0100 Subject: [PATCH] QueueNext/Prev android, ios, flutter --- .../FlutterCastFrameworkPlugin.kt | 10 ++++++++++ ios/Classes/SwiftFlutterCastFrameworkPlugin.swift | 10 ++++++++++ lib/src/cast/RemoteMediaClient.dart | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/FlutterCastFrameworkPlugin.kt b/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/FlutterCastFrameworkPlugin.kt index b712e09..63b7bdc 100644 --- a/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/FlutterCastFrameworkPlugin.kt +++ b/android/src/main/kotlin/com/gianlucaparadise/flutter_cast_framework/FlutterCastFrameworkPlugin.kt @@ -350,6 +350,16 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa remoteMediaClient.queueAppendItem(mediaQueueItem, null) } + override fun queueNextItem() { + val remoteMediaClient: RemoteMediaClient = remoteMediaClient ?: return + remoteMediaClient.queueNext(null) + } + + override fun queuePrevItem() { + val remoteMediaClient: RemoteMediaClient = remoteMediaClient ?: return + remoteMediaClient.queuePrev(null) + } + override fun setMute(muted: Boolean?) { if (muted == null) return val castSession = mCastSession ?: return diff --git a/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift b/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift index 33d2bc4..c7c4f82 100644 --- a/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift +++ b/ios/Classes/SwiftFlutterCastFrameworkPlugin.swift @@ -339,6 +339,16 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio remoteMediaClient?.queueInsert(mediaQueueItem, beforeItemWithID: kGCKMediaQueueInvalidItemID) } + public func queueNextItemWithError(_ error: AutoreleasingUnsafeMutablePointer) { + let remoteMediaClient = castSession?.remoteMediaClient + remoteMediaClient?.queueNextItem() + } + + public func queuePrevItemWithError(_ error: AutoreleasingUnsafeMutablePointer) { + let remoteMediaClient = castSession?.remoteMediaClient + remoteMediaClient?.queuePreviousItem() + } + // MARK: - GCKSessionManagerListener // onSessionSuspended diff --git a/lib/src/cast/RemoteMediaClient.dart b/lib/src/cast/RemoteMediaClient.dart index ab6ef9b..44c839f 100644 --- a/lib/src/cast/RemoteMediaClient.dart +++ b/lib/src/cast/RemoteMediaClient.dart @@ -114,6 +114,16 @@ class RemoteMediaClient { _hostApi.queueAppendItem(item); } + /// Jumps to the next item in the queue. + void queueNext() { + _hostApi.queueNextItem(); + } + + /// Jumps to the previous item in the queue. + void queuePrev() { + _hostApi.queuePrevItem(); + } + /// Internal method that shouldn't be visible @internal void dispatchPlayerStateUpdate(PlayerState playerState) {