Pigeon: Integrated onCastStateChanged API

This commit is contained in:
gianlucaparadise 2021-11-01 18:51:47 +01:00
parent c7dfd746d7
commit 925ff7a0dc
7 changed files with 12 additions and 15 deletions

View file

@ -61,7 +61,7 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
CastContext.getSharedInstance(applicationContext).addCastStateListener { i ->
Log.d(TAG, "Cast state changed: $i")
methodChannel.invokeMethod(MethodNames.onCastStateChanged, i)
flutterApi?.onCastStateChanged(i.toLong(), null)
}
mSessionManager = CastContext.getSharedInstance(applicationContext).sessionManager
@ -139,7 +139,7 @@ class FlutterCastFrameworkPlugin : FlutterPlugin, MethodCallHandler, ActivityAwa
return
}
val castState = CastContext.getSharedInstance(context).castState
channel?.invokeMethod(MethodNames.onCastStateChanged, castState)
flutterApi?.onCastStateChanged(castState.toLong()) { }
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)

View file

@ -1,8 +1,6 @@
package com.gianlucaparadise.flutter_cast_framework
object MethodNames {
const val onCastStateChanged = "CastContext.onCastStateChanged"
// region SessionManager
const val onSessionStarting = "SessionManager.onSessionStarting"
const val onSessionStarted = "SessionManager.onSessionStarted"

View file

@ -8,8 +8,6 @@
import Foundation
enum MethodNames : String {
case onCastStateChanged = "CastContext.onCastStateChanged"
// region SessionManager
case onSessionStarting = "SessionManager.onSessionStarting"
case onSessionStarted = "SessionManager.onSessionStarted"

View file

@ -107,7 +107,9 @@ public class SwiftFlutterCastFrameworkPlugin: NSObject, FlutterPlugin, GCKSessio
let castStateRaw = castState.rawValue
// Android CastStates are 1-to-4, while iOS CastStates are 0-to-3. I align iOS to Android by adding 1
let castStateRawAdjusted = castStateRaw + 1
self.channel.invokeMethod(MethodNames.onCastStateChanged.rawValue, arguments: castStateRawAdjusted)
self.flutterApi.onCastStateChangedCastState(NSNumber(value: castStateRawAdjusted)) { (_: Error?) in
}
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {

View file

@ -1,6 +1,4 @@
class PlatformMethodNames {
static const onCastStateChanged = "CastContext.onCastStateChanged";
static const onSessionStarting = "SessionManager.onSessionStarting";
static const onSessionStarted = "SessionManager.onSessionStarted";
static const onSessionStartFailed = "SessionManager.onSessionStartFailed";

View file

@ -12,8 +12,7 @@ class CastContext {
castApi.showCastDialog();
}
void onCastStateChanged(dynamic arguments) {
int castState = arguments;
void onCastStateChanged(int castState) {
state.value = CastState.values[castState];
}

View file

@ -23,10 +23,6 @@ class FlutterCastFramework {
debugPrint("Method call on flutter: $method $arguments");
switch (method) {
case PlatformMethodNames.onCastStateChanged:
castContext.onCastStateChanged(arguments);
break;
case PlatformMethodNames.onSessionStarting:
case PlatformMethodNames.onSessionStarted:
case PlatformMethodNames.onSessionStartFailed:
@ -72,4 +68,10 @@ class CastFlutterApiImpl extends CastFlutterApi {
List<String?> getSessionMessageNamespaces() {
return FlutterCastFramework.namespaces;
}
@override
void onCastStateChanged(int castState) {
debugPrint("yoyo onCastStateChanged: $castState");
FlutterCastFramework.castContext.onCastStateChanged(castState);
}
}