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