diff --git a/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/HostApis.java b/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/HostApis.java index c976fa9..8492e39 100644 --- a/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/HostApis.java +++ b/android/src/main/java/com/gianlucaparadise/flutter_cast_framework/HostApis.java @@ -154,6 +154,13 @@ public class HostApis { callback.reply(output); }); } + public void onCastStateChanged(Long castStateArg, Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.CastFlutterApi.onCastStateChanged", getCodec()); + channel.send(new ArrayList(Arrays.asList(castStateArg)), channelReply -> { + callback.reply(null); + }); + } } private static Map wrapError(Throwable exception) { Map errorMap = new HashMap<>(); diff --git a/ios/Classes/HostApis.h b/ios/Classes/HostApis.h index acc6387..c56df78 100644 --- a/ios/Classes/HostApis.h +++ b/ios/Classes/HostApis.h @@ -31,5 +31,6 @@ NSObject *CastFlutterApiGetCodec(void); @interface CastFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; - (void)getSessionMessageNamespacesWithCompletion:(void(^)(NSArray *, NSError *_Nullable))completion; +- (void)onCastStateChangedCastState:(NSNumber *)castState completion:(void(^)(NSError *_Nullable))completion; @end NS_ASSUME_NONNULL_END diff --git a/ios/Classes/HostApis.m b/ios/Classes/HostApis.m index 5656557..4e9016d 100644 --- a/ios/Classes/HostApis.m +++ b/ios/Classes/HostApis.m @@ -194,4 +194,14 @@ NSObject *CastFlutterApiGetCodec() { completion(output, nil); }]; } +- (void)onCastStateChangedCastState:(NSNumber *)arg_castState completion:(void(^)(NSError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.CastFlutterApi.onCastStateChanged" + binaryMessenger:self.binaryMessenger + codec:CastFlutterApiGetCodec()]; + [channel sendMessage:@[arg_castState] reply:^(id reply) { + completion(nil); + }]; +} @end diff --git a/lib/src/HostApis.dart b/lib/src/HostApis.dart index ff5a175..ac5bb1a 100644 --- a/lib/src/HostApis.dart +++ b/lib/src/HostApis.dart @@ -116,6 +116,7 @@ abstract class CastFlutterApi { static const MessageCodec codec = _CastFlutterApiCodec(); List getSessionMessageNamespaces(); + void onCastStateChanged(int castState); static void setup(CastFlutterApi? api) { { const BasicMessageChannel channel = BasicMessageChannel( @@ -130,5 +131,21 @@ abstract class CastFlutterApi { }); } } + { + const BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.CastFlutterApi.onCastStateChanged', codec); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onCastStateChanged was null.'); + final List args = (message as List?)!; + final int? arg_castState = args[0] as int?; + assert(arg_castState != null, 'Argument for dev.flutter.pigeon.CastFlutterApi.onCastStateChanged was null, expected non-null int.'); + api.onCastStateChanged(arg_castState!); + return; + }); + } + } } } diff --git a/lib/src/HostApisDefinition.dart b/lib/src/HostApisDefinition.dart index b9a92f2..060eabe 100644 --- a/lib/src/HostApisDefinition.dart +++ b/lib/src/HostApisDefinition.dart @@ -14,4 +14,5 @@ abstract class CastApi { @FlutterApi() abstract class CastFlutterApi { List getSessionMessageNamespaces(); + void onCastStateChanged(int castState); } \ No newline at end of file