diff --git a/lib/src/MethodNames.dart b/lib/src/MethodNames.dart index ab6bf19..7acb513 100644 --- a/lib/src/MethodNames.dart +++ b/lib/src/MethodNames.dart @@ -14,5 +14,4 @@ class PlatformMethodNames { static const getSessionMessageNamespaces = "CastSession.getSessionMessageNamespaces"; static const onMessageReceived = "CastSession.onMessageReceived"; - static const sendMessage = "CastSession.sendMessage"; } \ No newline at end of file diff --git a/lib/src/cast/CastContext.dart b/lib/src/cast/CastContext.dart index 8d1abbb..fecd09a 100644 --- a/lib/src/cast/CastContext.dart +++ b/lib/src/cast/CastContext.dart @@ -1,13 +1,15 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; +import '../HostApis.dart'; import '../MethodNames.dart'; import 'SessionManager.dart'; class CastContext { final ValueNotifier state = ValueNotifier(CastState.unavailable); final MethodChannel _channel; + final CastApi castApi; - CastContext(this._channel); + CastContext(this._channel, this.castApi); void showCastChooserDialog() { _channel.invokeMethod(PlatformMethodNames.showCastDialog); @@ -22,7 +24,7 @@ class CastContext { SessionManager get sessionManager { var result = _sessionManager; if (result == null) { - _sessionManager = result = SessionManager(_channel); + _sessionManager = result = SessionManager(castApi); } return result; } diff --git a/lib/src/cast/SessionManager.dart b/lib/src/cast/SessionManager.dart index 140f9e7..32cc0b4 100644 --- a/lib/src/cast/SessionManager.dart +++ b/lib/src/cast/SessionManager.dart @@ -1,11 +1,12 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; +import '../HostApis.dart'; import '../MethodNames.dart'; class SessionManager { - final MethodChannel _channel; + final CastApi castApi; - SessionManager(this._channel); + SessionManager(this.castApi); final ValueNotifier state = ValueNotifier(SessionState.idle); @@ -54,8 +55,10 @@ class SessionManager { } void sendMessage(String namespace, String message) { - final argsMap = {'namespace': namespace, 'message': message}; - _channel.invokeMethod(PlatformMethodNames.sendMessage, argsMap); + final castMessage = CastMessage(); + castMessage.namespace = namespace; + castMessage.message = message; + castApi.sendMessage(castMessage); } } diff --git a/lib/src/flutter_cast_framework.dart b/lib/src/flutter_cast_framework.dart index 9ce0cc2..b2270de 100644 --- a/lib/src/flutter_cast_framework.dart +++ b/lib/src/flutter_cast_framework.dart @@ -1,12 +1,14 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; +import 'HostApis.dart'; import 'MethodNames.dart'; import 'cast/CastContext.dart'; class FlutterCastFramework { static const MethodChannel _channel = const MethodChannel('flutter_cast_framework'); + static final castApi = CastApi(); /// List of namespaces to listen for custom messages static List namespaces = []; @@ -58,7 +60,7 @@ class FlutterCastFramework { static CastContext get castContext { var castContext = _castContext; if (!_isInitiated || castContext == null) { - _castContext = castContext = CastContext(_channel); + _castContext = castContext = CastContext(_channel, castApi); // TODO: find a better way to init the plugin _isInitiated = true; _init();