callbackDispatcher function
void
callbackDispatcher()
Implementation
@pragma('vm:entry-point')
void callbackDispatcher() {
const MethodChannel _backgroundChannel =
MethodChannel(Keys.BACKGROUND_CHANNEL_ID);
WidgetsFlutterBinding.ensureInitialized();
_backgroundChannel.setMethodCallHandler((MethodCall call) async {
if (Keys.BCM_SEND_LOCATION == call.method) {
final Map<dynamic, dynamic> args = call.arguments;
final Function? callback = PluginUtilities.getCallbackFromHandle(
CallbackHandle.fromRawHandle(args[Keys.ARG_CALLBACK]))!;
final LocationDto location =
LocationDto.fromJson(args[Keys.ARG_LOCATION]);
if (callback != null) {
callback(location);
}
} else if (Keys.BCM_NOTIFICATION_CLICK == call.method) {
final Map<dynamic, dynamic> args = call.arguments;
final Function? notificationCallback =
PluginUtilities.getCallbackFromHandle(CallbackHandle.fromRawHandle(
args[Keys.ARG_NOTIFICATION_CALLBACK]));
if (notificationCallback != null) {
notificationCallback();
}
} else if (Keys.BCM_INIT == call.method) {
final Map<dynamic, dynamic> args = call.arguments;
final Function? initCallback = PluginUtilities.getCallbackFromHandle(
CallbackHandle.fromRawHandle(args[Keys.ARG_INIT_CALLBACK]));
Map<dynamic, dynamic>? data = args[Keys.ARG_INIT_DATA_CALLBACK];
if (initCallback != null) {
initCallback(data);
}
} else if (Keys.BCM_DISPOSE == call.method) {
final Map<dynamic, dynamic> args = call.arguments;
final Function? disposeCallback = PluginUtilities.getCallbackFromHandle(
CallbackHandle.fromRawHandle(args[Keys.ARG_DISPOSE_CALLBACK]));
if (disposeCallback != null) {
disposeCallback();
}
}
});
_backgroundChannel.invokeMethod(Keys.METHOD_SERVICE_INITIALIZED);
}