displayIAM method

Future<void> displayIAM(
  1. String messageId, {
  2. String? templateId = '',
})

Implementation

Future<void> displayIAM(String messageId, {String? templateId = ''}) async {
  var appContext = appNavigatorKey?.currentState?.overlay?.context;
  var messages = await getInAppMessages();
  var message = messages.where((m) => m.id == messageId).firstOrNull;

  if (displayingIAM == messageId) { return; }

  displayingIAM = messageId;

  if (message != null && appContext != null && appContext.mounted && message.type == InAppMessageType.alert) {
    List<TextButton> buttons = [];

    setInAppMessageAsSeen(messageId);

    for (var button in message.buttons) {
      buttons.add(
        TextButton(
          style: TextButton.styleFrom(textStyle: Theme.of(appContext).textTheme.labelLarge),
          child: Text(button.label),
          onPressed: () {
            executeButtonAction(button.id, message.id);
            Navigator.of(appContext).pop();
          }
      ));
    }

    showDialog(context: appContext, builder: (x) => AlertDialog(
      title: Text(message.title),
      content: Text(message.body),
      actions: buttons
    ));
  }
  else {
    await displayNotificationInternal(messageId, templateId: templateId);
  }
}