initialize static method

Future<void> initialize({
  1. PushRegisterHandler? onPushRegister,
  2. PushObjectHandler? onPushReceive,
  3. PushObjectHandler? onPushOpen,
  4. PushObjectHandler? onPushDismiss,
  5. PushButtonClickedHandler? onPushButtonClicked,
  6. PushCarouselHandler? onCarouselObjectSelected,
})

Registers push lifecycle callbacks and initialises the Flutter Method Channel.

Implementation

static Future<void> initialize({
  PushRegisterHandler? onPushRegister,
  PushObjectHandler? onPushReceive,
  PushObjectHandler? onPushOpen,
  PushObjectHandler? onPushDismiss,
  PushButtonClickedHandler? onPushButtonClicked,
  PushCarouselHandler? onCarouselObjectSelected,
}) async {
  WidgetsFlutterBinding.ensureInitialized();

  _instance._onPushRegister = onPushRegister ?? _instance._onPushRegister;
  _instance._onPushReceive = onPushReceive ?? _instance._onPushReceive;
  _instance._onPushOpen = onPushOpen ?? _instance._onPushOpen;
  _instance._onPushDismiss = onPushDismiss ?? _instance._onPushDismiss;
  _instance._onPushButtonClicked =
      onPushButtonClicked ?? _instance._onPushButtonClicked;
  _instance._onCarouselObjectSelected =
      onCarouselObjectSelected ?? _instance._onCarouselObjectSelected;

  _instance._channel.setMethodCallHandler((call) async {
    final arguments = call.arguments;
    switch (call.method) {
      case _keyOnPushRegister:
        final token =
            (arguments as Map<dynamic, dynamic>)['pushToken'] as String? ??
                '';
        await _instance._onPushRegister?.call(token);
        break;
      case _keyOnPushReceive:
        final push =
            NetmeraPushObject.fromJson(arguments as Map<dynamic, dynamic>);
        await _instance._onPushReceive?.call(push);
        break;
      case _keyOnPushOpen:
        final push =
            NetmeraPushObject.fromJson(arguments as Map<dynamic, dynamic>);
        await _instance._onPushOpen?.call(push);
        break;
      case _keyOnPushDismiss:
        final push =
            NetmeraPushObject.fromJson(arguments as Map<dynamic, dynamic>);
        await _instance._onPushDismiss?.call(push);
        break;
      case _keyOnPushButtonClicked:
        final map = arguments as Map<dynamic, dynamic>;
        final push = NetmeraPushObject.fromJson(map);
        final clickedActionMap = map['clickedAction'];
        final action = clickedActionMap != null
            ? NetmeraInteractiveAction.fromJson(
                clickedActionMap as Map<dynamic, dynamic>)
            : null;
        await _instance._onPushButtonClicked?.call(push, action);
        break;
      case _keyOnCarouselObjectSelected:
        final map = arguments as Map<dynamic, dynamic>;
        final push = NetmeraPushObject.fromJson(map);
        final carouselMap = map['carouselItem'];
        final item = carouselMap != null
            ? NetmeraCarouselObject.fromJson(carouselMap)
            : null;
        await _instance._onCarouselObjectSelected?.call(push, item);
        break;
    }
  });

  await _instance._channel.invokeMethod(_keyInitService);
}