onMethodCall method

Future onMethodCall(
  1. MethodCall call
)

Implementation

Future<dynamic> onMethodCall(MethodCall call) async {
  Logger.d('Flutter received: ${call.method}');
  try {
    switch (call.method) {
      case 'startScreenCapture':
        Map<String, dynamic> payload = {};
        Children? st;
        String img = "";

        await Future.wait([
          Tree().traceTree().then((value) => st = value),
          PxBitmapGenerator.captureScreenshot().then((value) =>
          img = value),
        ]);

        if (st == null) {
          Logger.d('Error in reading hierarchy');
          return;
        }
        if (img.isEmpty) {
          Logger.d('Error in capturing screen');
          return;
        }

        final args = call.arguments as Map<dynamic, dynamic>;
        payload['st'] = st;
        payload['av'] = args['av'];
        payload['act'] = args['act'];
        if (args['screen'].toString().isNotNullAndEmpty) {
          payload['screen'] = args['screen'];
        }
        Map<String, dynamic> scr = {};
        scr['img'] = 'data:image/jpeg;base64,$img';
        scr['w'] = PxUtils().getScreenWidth.toInt();
        scr['h'] = PxUtils().getScreenHeight.toInt();

        payload['scr'] = scr;

        if (Platform.isIOS){
          var decoded = json.decode(jsonEncode(payload));
          return decoded;
        } else {
          return jsonEncode(payload);
        }

      case 'findAnchorWidget':
        try {
          final widget =
          await PxInspector.instance.getAnchorWidget(call.arguments);
          if (widget.isNotEmpty) {
            widget["promptId"] = call.arguments["promptId"];
          }
          return widget;
        } catch(e) {
          Logger.d("$e error while handling method ${call.method}");
          return <String, String>{
            "x": '0',
            "y": '0',
            "w": '0',
            "h": '0',
            "visibility": 'false'
          };
        }

      case 'startWidgetTracking':
        PxAnchorWidgetTracker.instance.startWidgetTracking(
            call.arguments['promptId'], call.arguments['eid']);
        return true;

      case 'stopWidgetTracking':
        PxAnchorWidgetTracker.instance
            .stopWidgetTracking(call.arguments['promptId']);
        return true;

      case 'onActionPerformed':
        if (call.arguments['action'] is String) {
          _pxActionListener?.onActionPerformed(call.arguments['action']);
        }
        return true;

      case 'onLaunchUrl':
        if (call.arguments['url'] is String) {
          _pxDeeplinkListener?.onLaunchUrl(call.arguments['url']);
        }
        return true;

      case 'onEvent':
        if (call.arguments['event'] is String &&
            call.arguments['hanselData'] is Map) {
          _pxInternalEventsListener?.onEvent(
              call.arguments['event'], call.arguments['hanselData']);
        }
        return true;

      case 'onPxInitialized':
        _pxInitializationListener?.onPxInitialized();
        return true;

      default:
        Logger.d("Method '${call
            .method}' is not implemented in px_flutter_adapter.dart");
    }
    return Future.value("");
  } catch (e){
    Logger.d("$e error while handling method ${call.method}");
  }
}