diff --git a/kraken/lib/src/launcher/controller.dart b/kraken/lib/src/launcher/controller.dart index 37b0510ec1..0613a55be2 100644 --- a/kraken/lib/src/launcher/controller.dart +++ b/kraken/lib/src/launcher/controller.dart @@ -471,6 +471,8 @@ class KrakenController { } _methodChannel = methodChannel; + setJSMethodCallCallback(this); + _view = KrakenViewController(viewportWidth, viewportHeight, background: background, showPerformanceOverlay: showPerformanceOverlay, diff --git a/kraken/lib/src/module/method_channel.dart b/kraken/lib/src/module/method_channel.dart index 7d4137158a..ad8db2272c 100644 --- a/kraken/lib/src/module/method_channel.dart +++ b/kraken/lib/src/module/method_channel.dart @@ -15,15 +15,12 @@ Future _invokeMethodFromJavaScript(KrakenController controller, String return controller.methodChannel._invokeMethodFromJavaScript(method, args); } +const METHOD_CHANNEL_NAME = 'MethodChannel'; + class MethodChannelModule extends BaseModule { @override - String get name => 'MethodChannel'; - MethodChannelModule(ModuleManager moduleManager) : super(moduleManager) { - if (moduleManager == null) return; - moduleManager.controller.methodChannel._onJSMethodCall = (String method, dynamic arguments) async { - moduleManager.emitModuleEvent(name, data: [method, arguments]); - }; - } + String get name => METHOD_CHANNEL_NAME; + MethodChannelModule(ModuleManager moduleManager) : super(moduleManager); @override void dispose() {} @@ -41,6 +38,14 @@ class MethodChannelModule extends BaseModule { } } +void setJSMethodCallCallback(KrakenController controller) { + if (controller.methodChannel == null) return; + + controller.methodChannel._onJSMethodCall = (String method, dynamic arguments) async { + controller.module.moduleManager.emitModuleEvent(METHOD_CHANNEL_NAME, data: [method, arguments]); + }; +} + class KrakenMethodChannel { MethodCallCallback _onJSMethodCallCallback;