onMethodCall method
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("");
}