onMethodCall method

Future onMethodCall(
  1. MethodCall call
)

Implementation

Future<dynamic> onMethodCall(MethodCall call) async {
  log('Flutter received: ${call.method}');
  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) {
        log('Error in reading hierarchy');
        return;
      }
      if (img.isEmpty) {
        log('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;

      log('returning screen capture results to Android');
      return jsonEncode(payload);

    case 'findAnchorWidget':
      final widget = await PxInspector.instance.getAnchorWidget(call.arguments);
      widget["promptId"] = call.arguments["promptId"];
      return widget;

    case 'startWidgetTracking':
      PxAnchorWidgetTracker.instance.startWidgetTracking(call.arguments['promptId'], call.arguments['eid'], this);
      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 'onPxInitialized':
      _pxInitializationListener?.onPxInitialized();
      return true;

    default:
      log("Method '${call.method}' is not implemented in px_flutter_adapter.dart");
  }
  return Future.value("");
}