initializeChannel method

void initializeChannel()

Implementation

void initializeChannel() {
  _controller.addJavaScriptChannel(
    'flenderChannel',
    onMessageReceived: (JavaScriptMessage message) async {
      try {
        final data = jsonDecode(message.message) as Map<String, dynamic>?;
        if (data == null) return;

        final command = data['command'] as String?;
        if (command != 'callPlugin') return;

        final pluginName = data['plugin'] as String?;
        final method = data['method'] as String?;
        final requestId = data['requestId'] as int?;
        final payload = data['payload'];

        if (pluginName == null || method == null || requestId == null) {
          return;
        }

        final plugin = _plugins[pluginName];
        if (plugin == null) {
          _respondError(requestId, 'Plugin "$pluginName" not found');
          return;
        }

        final result = await plugin.onCall(method, payload);
        _respondSuccess(requestId, result);
      } catch (e) {
        _respondError(-1, 'FlenderChannel parse error: $e');
      }
    },
  );
}