callbackDispatcher function

void callbackDispatcher({
  1. dynamic inited = true,
})

callbackDispatcher use to install background channel

Implementation

void callbackDispatcher({inited: true}) {
  WidgetsFlutterBinding.ensureInitialized();

  NotificationsListener._bgMethodChannel
      .setMethodCallHandler((MethodCall call) async {
    try {
      switch (call.method) {
        case "sink_event":
          {
            final List<dynamic> args = call.arguments;
            final evt = NotificationEvent.fromMap(args[1]);

            final Function? callback = PluginUtilities.getCallbackFromHandle(
                CallbackHandle.fromRawHandle(args[0]));

            if (callback == null) {
              print("callback is not register: ${args[0]}");
              return;
            }

            callback(evt);
          }
          break;
        default:
          {
            print("unknown bg_method: ${call.method}");
          }
      }
    } catch (e) {
      print(e);
    }
  });

  // if start the ui first, this will cause method not found error
  if (inited)
    NotificationsListener._bgMethodChannel.invokeMethod('service.initialized');
}