handleBackgroundMethodCall function
Dispatches a call from the native side to the user callback whose handle it carries.
Implementation
@visibleForTesting
Future<void> handleBackgroundMethodCall(MethodCall call) async {
final Map<dynamic, dynamic> args =
call.arguments as Map<dynamic, dynamic>? ?? const {};
switch (call.method) {
case Keys.BCM_SEND_LOCATION:
final Function? callback = _callbackFromHandle(args[Keys.ARG_CALLBACK]);
final Object? location = args[Keys.ARG_LOCATION];
if (callback != null && location is Map) {
await callback(LocationDto.fromJson(location));
}
case Keys.BCM_NOTIFICATION_CLICK:
await _callbackFromHandle(args[Keys.ARG_NOTIFICATION_CALLBACK])?.call();
case Keys.BCM_INIT:
final Function? initCallback = _callbackFromHandle(
args[Keys.ARG_INIT_CALLBACK],
);
final Object? data = args[Keys.ARG_INIT_DATA_CALLBACK];
// Platform maps arrive as Map<Object?, Object?>; the callback expects string keys.
await initCallback?.call(
data is Map ? Map<String, dynamic>.from(data) : <String, dynamic>{},
);
case Keys.BCM_DISPOSE:
await _callbackFromHandle(args[Keys.ARG_DISPOSE_CALLBACK])?.call();
}
}