From 9269a67c4aad94ca998108489f3644d45d540503 Mon Sep 17 00:00:00 2001 From: gianlucaparadise Date: Mon, 20 Dec 2021 07:02:53 +0100 Subject: [PATCH] AdBreakProgress flutter --- lib/src/cast/RemoteMediaClient.dart | 10 ++++++++++ .../widgets/expanded_controls/ExpandedControls.dart | 13 +++++++++++++ lib/src/flutter_cast_framework.dart | 12 ++++++++++++ 3 files changed, 35 insertions(+) diff --git a/lib/src/cast/RemoteMediaClient.dart b/lib/src/cast/RemoteMediaClient.dart index fd2cd47..6ffeae1 100644 --- a/lib/src/cast/RemoteMediaClient.dart +++ b/lib/src/cast/RemoteMediaClient.dart @@ -5,6 +5,13 @@ import '../../cast.dart'; import '../PlatformBridgeApis.dart'; typedef ProgressListener = void Function(int progressMs, int durationMs); +typedef AdBreakClipProgressListener = void Function( + String adBreakId, + String adBreakClipId, + int progressMs, + int durationMs, + int whenSkippableMs, +); /// Class for controlling a media player application running on a receiver. class RemoteMediaClient { @@ -38,6 +45,9 @@ class RemoteMediaClient { /// Called when receiving media error message. VoidCallback? onMediaError; + /// Callback to get updates on the progess of the currently playing ad break clip + AdBreakClipProgressListener? onAdBreakClipProgressUpdated; + /// Loads a new media item with specified options. void load(MediaLoadRequestData request) { _hostApi.loadMediaLoadRequestData(request); diff --git a/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart b/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart index 76866bc..246e585 100644 --- a/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart +++ b/lib/src/cast/widgets/expanded_controls/ExpandedControls.dart @@ -56,6 +56,8 @@ class _ExpandedControlsState extends State { sessionManager.remoteMediaClient.playerState .addListener(_onPlayerStateChanged); sessionManager.remoteMediaClient.onProgressUpdated = _onProgressUpdated; + sessionManager.remoteMediaClient.onAdBreakClipProgressUpdated = + _onAdBreakClipProgressUpdated; super.initState(); } @@ -67,6 +69,7 @@ class _ExpandedControlsState extends State { sessionManager.remoteMediaClient.playerState .removeListener(_onPlayerStateChanged); sessionManager.remoteMediaClient.onProgressUpdated = null; + sessionManager.remoteMediaClient.onAdBreakClipProgressUpdated = null; widget.controller.dispose(); @@ -104,6 +107,16 @@ class _ExpandedControlsState extends State { widget.controller.updateProgress(progress, duration); } + void _onAdBreakClipProgressUpdated( + String adBreakId, + String adBreakClipId, + int progressMs, + int durationMs, + int whenSkippableMs, + ) { + widget.controller.updateProgress(progressMs, durationMs); + } + Widget _getDecoratedToolbar(MediaInfo? mediaInfo) { // Title and subtitle can't be retrieved at the moment // final title = mediaInfo?.mediaMetadata?.strings[MediaMetadataKey.title] diff --git a/lib/src/flutter_cast_framework.dart b/lib/src/flutter_cast_framework.dart index fafed77..aca4144 100644 --- a/lib/src/flutter_cast_framework.dart +++ b/lib/src/flutter_cast_framework.dart @@ -149,5 +149,17 @@ class _CastFlutterApiImplementor extends CastFlutterApi { void onProgressUpdated(int progressMs, int durationMs) { remoteMediaClient.onProgressUpdated?.call(progressMs, durationMs); } + + @override + void onAdBreakClipProgressUpdated(String adBreakId, String adBreakClipId, + int progressMs, int durationMs, int whenSkippableMs) { + remoteMediaClient.onAdBreakClipProgressUpdated?.call( + adBreakId, + adBreakClipId, + progressMs, + durationMs, + whenSkippableMs, + ); + } //endregion }