Progress Status as stream
This commit is contained in:
parent
b5a22b9599
commit
030adf3920
2 changed files with 19 additions and 0 deletions
|
|
@ -16,14 +16,23 @@ typedef AdBreakClipProgressListener = void Function(
|
|||
);
|
||||
typedef MediaStatusListener = void Function(MediaStatus mediaStatus);
|
||||
|
||||
class ProgressInfo {
|
||||
int progressMs;
|
||||
int durationMs;
|
||||
|
||||
ProgressInfo(this.progressMs, this.durationMs);
|
||||
}
|
||||
|
||||
/// Class for controlling a media player application running on a receiver.
|
||||
class RemoteMediaClient {
|
||||
RemoteMediaClient(this._hostApi) {
|
||||
this.mediaStatusStream = this._mediaStatusStreamController.stream;
|
||||
this.progressStream = this._progressStreamController.stream;
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
this._mediaStatusStreamController.close();
|
||||
this._progressStreamController.close();
|
||||
}
|
||||
|
||||
final CastHostApi _hostApi;
|
||||
|
|
@ -35,6 +44,9 @@ class RemoteMediaClient {
|
|||
/// Callback to get updates on the progress of the currently playing media.
|
||||
ProgressListener? onProgressUpdated;
|
||||
|
||||
final _progressStreamController = StreamController<ProgressInfo>.broadcast();
|
||||
late Stream<ProgressInfo> progressStream;
|
||||
|
||||
/// Called when updated media metadata is received.
|
||||
VoidCallback? onMetadataUpdated;
|
||||
|
||||
|
|
@ -108,4 +120,10 @@ class RemoteMediaClient {
|
|||
void dispatchMediaStatusUpdate(MediaStatus mediaStatus) {
|
||||
this._mediaStatusStreamController.add(mediaStatus);
|
||||
}
|
||||
|
||||
/// Internal method that shouldn't be visible
|
||||
@internal
|
||||
void dispatchProgressUpdate(int progressMs, int durationMs) {
|
||||
this._progressStreamController.add(ProgressInfo(progressMs, durationMs));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ class _CastFlutterApiImplementor extends CastFlutterApi {
|
|||
@override
|
||||
void onProgressUpdated(int progressMs, int durationMs) {
|
||||
remoteMediaClient.onProgressUpdated?.call(progressMs, durationMs);
|
||||
remoteMediaClient.dispatchProgressUpdate(progressMs, durationMs);
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
|||
Loading…
Reference in a new issue