handleBackgroundMethodCall function

  1. @visibleForTesting
Future<void> handleBackgroundMethodCall(
  1. MethodCall call
)

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