MediaQueue callbacks flutter
This commit is contained in:
parent
3f4044ad2e
commit
f41c18e8c3
3 changed files with 81 additions and 2 deletions
36
lib/src/cast/MediaQueue.dart
Normal file
36
lib/src/cast/MediaQueue.dart
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_cast_framework/src/PlatformBridgeApis.dart';
|
||||
|
||||
typedef MediaQueueItemsInsertedInRangeCallback = void Function(
|
||||
int insertIndex, int insertCount);
|
||||
typedef MediaQueueItemsChangedAtIndexesCallback = void Function(
|
||||
List<int?> indexes);
|
||||
typedef MediaQueueItemsReorderedAtIndexesCallback = void Function(
|
||||
List<int?> indexes, int insertBeforeIndex);
|
||||
|
||||
class MediaQueue {
|
||||
final CastHostApi _hostApi;
|
||||
|
||||
MediaQueue(this._hostApi);
|
||||
|
||||
/// Called when a contiguous range of queue items have been inserted into the queue.
|
||||
MediaQueueItemsInsertedInRangeCallback? itemsInsertedInRange;
|
||||
|
||||
/// Called when the queue has been entirely reloaded.
|
||||
VoidCallback? itemsReloaded;
|
||||
|
||||
/// Called when one or more queue items have been removed from the queue.
|
||||
MediaQueueItemsChangedAtIndexesCallback? itemsRemovedAtIndexes;
|
||||
|
||||
/// Called when one or more queue items have been reordered in the queue.
|
||||
MediaQueueItemsReorderedAtIndexesCallback? itemsReorderedAtIndexes;
|
||||
|
||||
/// Called when one or more queue items have been updated in the queue.
|
||||
MediaQueueItemsChangedAtIndexesCallback? itemsUpdatedAtIndexes;
|
||||
|
||||
/// Called when one or more changes have been made to the queue.
|
||||
VoidCallback? mediaQueueChanged;
|
||||
|
||||
/// Called when one or more changes are about to be made to the queue.
|
||||
VoidCallback? mediaQueueWillChange;
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import 'package:meta/meta.dart';
|
|||
|
||||
import '../../cast.dart';
|
||||
import '../PlatformBridgeApis.dart';
|
||||
import './MediaQueue.dart';
|
||||
|
||||
typedef ProgressListener = void Function(int progressMs, int durationMs);
|
||||
typedef AdBreakClipProgressListener = void Function(
|
||||
|
|
@ -26,6 +27,7 @@ class ProgressInfo {
|
|||
/// Class for controlling a media player application running on a receiver.
|
||||
class RemoteMediaClient {
|
||||
RemoteMediaClient(this._hostApi) {
|
||||
this.mediaQueue = MediaQueue(_hostApi);
|
||||
this.mediaStatusStream = this._mediaStatusStreamController.stream;
|
||||
this.progressStream = this._progressStreamController.stream;
|
||||
}
|
||||
|
|
@ -37,6 +39,9 @@ class RemoteMediaClient {
|
|||
|
||||
final CastHostApi _hostApi;
|
||||
|
||||
/// Returns the associated MediaQueue.
|
||||
late MediaQueue mediaQueue;
|
||||
|
||||
/// Listenable state of the remote media player
|
||||
ValueListenable<PlayerState> get playerState => _playerStateNotifier;
|
||||
final _playerStateNotifier = ValueNotifier(PlayerState.unknown);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import 'package:flutter_cast_framework/src/cast/RemoteMediaClient.dart';
|
|||
|
||||
import 'PlatformBridgeApis.dart';
|
||||
import 'cast/CastContext.dart';
|
||||
import 'cast/MediaQueue.dart';
|
||||
|
||||
/// Entrypoint for the Flutter Cast Framework
|
||||
class FlutterCastFramework {
|
||||
|
|
@ -34,8 +35,8 @@ class _CastFlutterApiImplementor extends CastFlutterApi {
|
|||
final List<String> namespaces = [];
|
||||
|
||||
SessionManager get sessionManager => castContext.sessionManager;
|
||||
RemoteMediaClient get remoteMediaClient =>
|
||||
castContext.sessionManager.remoteMediaClient;
|
||||
RemoteMediaClient get remoteMediaClient => sessionManager.remoteMediaClient;
|
||||
MediaQueue get mediaQueue => remoteMediaClient.mediaQueue;
|
||||
|
||||
_CastFlutterApiImplementor({
|
||||
required this.castContext,
|
||||
|
|
@ -165,4 +166,41 @@ class _CastFlutterApiImplementor extends CastFlutterApi {
|
|||
);
|
||||
}
|
||||
//endregion
|
||||
|
||||
//region MediaQueueu
|
||||
@override
|
||||
void itemsInsertedInRange(int insertIndex, int insertCount) {
|
||||
mediaQueue.itemsInsertedInRange?.call(insertIndex, insertCount);
|
||||
}
|
||||
|
||||
@override
|
||||
void itemsReloaded() {
|
||||
mediaQueue.itemsReloaded?.call();
|
||||
}
|
||||
|
||||
@override
|
||||
void itemsRemovedAtIndexes(List<int?> indexes) {
|
||||
mediaQueue.itemsRemovedAtIndexes?.call(indexes);
|
||||
}
|
||||
|
||||
@override
|
||||
void itemsReorderedAtIndexes(List<int?> indexes, int insertBeforeIndex) {
|
||||
mediaQueue.itemsReorderedAtIndexes?.call(indexes, insertBeforeIndex);
|
||||
}
|
||||
|
||||
@override
|
||||
void itemsUpdatedAtIndexes(List<int?> indexes) {
|
||||
mediaQueue.itemsUpdatedAtIndexes?.call(indexes);
|
||||
}
|
||||
|
||||
@override
|
||||
void mediaQueueChanged() {
|
||||
mediaQueue.mediaQueueChanged?.call();
|
||||
}
|
||||
|
||||
@override
|
||||
void mediaQueueWillChange() {
|
||||
mediaQueue.mediaQueueWillChange?.call();
|
||||
}
|
||||
//endregion
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue